一、用SQL对数据分组
GROUP BY
Group by,按...分组
作用:根据给定字段进行字段的分组,通常和聚合函数配合使用,实现分组的分析
写法:select ...from ...group by 字段名 (也可以是多个字段)
GROUP BY的逻辑
SELECT gender,COUNT(user_id) FROM users GROUP BY gender;
二、用SQL筛选数据
WHERE
Where,在哪儿
作用:对数据按照特定的条件去进行筛选,找到符合条件的数据
写法 :select ...from ... where 条件
AND/OR,多重条件的组合
AND,且;OR,或
作用:多个条件以“且”“或”的方式连接,进行条件的约束
写法:select ...from ... where 条件1 and/or 条件2(如果有更多条件,可继续补充)
操作符(operator )
等于=
大于>
小于<
不等于<>或!=
大于等于>=
小于等于<=
IS NULL
is null:字段为空值
ls not null:字段不为空值
IN
in : 在...之中
作用:in可以看作是or和=的组合,但写法更加简便
写法 :IN(值1,值2,值3...值n)
BETWEEN
between:在...之间
作用:找出两个值之间的数据
写法:BETWEEN 值1AND 值2
LIKE
like : 类似,近似通配符 :%
作用:实现模糊查询
写法 :like要查找的内容+%的组合,%的用法类似Excel中的*
通配符位置带来的区别
HAVING,对聚合后的结果做筛选
having:有
作用:对聚合后的结果做筛选,找到符合条件的结果
写法:SELECT...( 这里有聚合函数)FROM ...GROUP BY ...HAVING 条件(这里的条件针对聚合函数)
ORDER BY
Order by: 按照..排序
作用:对显示的结果按照字段进行大小排序
写法:SELECT...FROM ...ORDER BY字段名(这里也可以是多个字段
三、随堂练习
正确答案: 正确
解析:
WHERE语何一般位置在FROM的后面
正确答案: 错误
解析:
注意区分HAVING与WHERE,在本题里,是对聚合后的结果做筛选,因此应当使用HAVING
正确答案: 错误
解析:
GROUP BY应该在FROM之后
正确答案:错误
解析:
筛选的变量满足其中一个值就属于满足条件的情况下,可以用IN简写,
但下面这些情况下,IN都无法代替OR的功能:
SELECT*FROM orders WHERErev>0 OR units>0;
SELECT*FROM ordersWHERE rev<100 0R rev>1000
正确答案: AC
解析:
AND表示且,需要同时满足AND两边的条件:
OR表示或,即满足任一条件即可:
BETWEEN代表在两者之间,且包含两端:
IN表示在列出的这些值中在这里即代表=0或=1000
正确答案: 正确
解析:
注意区分HAVING与WHERE,在本题里,WHERE筛选的仍然是user id这个原始数据中存在的字段且位置在GROUP BY前,而并非对聚合后的结果做筛选
正确答案: 正确
解析:
注意区分HAVING与WHERE,在本题里,是对聚合后的结果做筛选,因此应当使用HAVING
正确答案:C
解析:
在SQL语句中,%代表通配符,可以代替任何字段,且需要和LIKE搭配使用
正确答案: BCD
解析:
NULL代表了数据的缺失,它不是0,也不是空格,只能用IS NULL 来表达
正确答案: 错误
解析:
默认是升序排列,如果需要降序排列,需要在ORDER BY 结尾增加DESC
正确答案: 正确
解析:
WHERE语句就是SQL语句中的筛选语句