SQL之数据分组
2019-01-17 00:21
281 查看
为何数据分组
当希望得知不同的组中具有的不同数量的某一列内容时,则需要进行对数据的分组~
创建分组
使用 SELECT 语句的 GROUP BY 子句进行创建。
输入▼
# SELECT id,COUNT(*) AS num_prods FROM Products GROUP BY id;
输出▼
+-------+----------+ | id | num_prods| +-------+----------+ | BRS01 | 3 | | DLL01 | 4 | | FNG01 | 2 | +-------+----------+
过滤分组
由于 WHERE 只能对行进行过滤,而不能对组进行过滤。
因此使用 HAVING 语句~
HAVING 支持所有的 WHERE 操作符
输入▼
# 方法类似上一个,仅仅是对COUNT(*)进行了过滤,v SELECT id,COUNT(*) AS orders FROM Orders GROUP BY id HAVING COUNT(*) >=2
输出▼
+------------+----------+ | id | orders | +------------+----------+ | 1000000001 | 2 | +------------+----------+
WHERE 和 HAVING 区别:
- WHERE 在数据分组前进行过滤
- HAVING 在数据分组后进行过滤
由于 WHERE 排除的行不包括在分组中,这可能会改变计算值进而影响 HAVING 子句中基于这些值过滤掉的分组。
相关文章推荐
- SQL语句分组获取记录的第一条数据的方法
- sql 分组取最新的数据sqlserver巧用row_number和partition by分组取top数据
- 分组筛选数据,某个数据字段比如说患者就诊超过一次的,身份证号会重复出现的,sql语句,备忘用的
- SQL 分析函数over partition 分组数据后取前N条
- sql 分组查询中每组中某列的各行字符数据相加显示
- Oracle sql按年、月、周等,分组查询数据
- sql获取分组后的第二条数据 group by limit
- sql分组(orderBy、GroupBy)获取每组前一(几)条数据
- sql 分组取每组的前n条或每组的n%(百分之n)的数据
- 将sql查询出来的数据用时间分组(以天为单位)
- SQL字符串分组聚合(分组后的数据查询后用逗号隔开)
- SQL 取分组后前三条数据
- sql 语句取分组后的条件数据
- SQL数据分组后取最大值或者取前几个值(按照某一列排序)
- SQL 分组数据进行批量更新
- SQL基础(一七)--- 数据分组
- sql获取分组排序后数据的脚本
- sql 分组取最新的数据
- sql 如何按时间排序 分组 并且取每组时间最大或最小的一条数据