SQL分组数据

时间: 2023-07-09 admin 互联网

SQL分组数据

SQL分组数据

//创建分组,对每个供应商进行产品数量计算
SELECT vend_id, COUNT(*) AS num_prods
FROM Products
GROUP BY vend_id
//GROUP BY 规定
1.可以包含任意列,可以进行嵌套且SELECT语句中的列都要在GROUP BY子句中给出
2.GROUP BY 字句列出的每一列都必须是检索列或有效表达式,不能是聚集函数
3.如果嵌套了分组,则按最后指定的分组进行汇总。
4.SQL Server支持ALL子句,用来返回所有分组。没有匹配行的分组返回NULL
5.大多数SQL不允许GROUP BY列带长度可变的数据类型(文本、备注字段等)
6.分组列中包含NULL的行,将NULL作为分组返回,多行NULL作为一组
7.GROUP BY子句必须出现在WHERE子句之后,ORDER BY子句之前
8.GROUP BY 2,1,表示按选择的第二个列分组,再按第一个列分组,并不是所有SQL实现都支持
//HAVING过滤分组
SELECT cust_id,COUNT(*) AS orders
FROM Orders
GROUP BY cust_id
HAVING COUNT(*)>=2//HAVING过滤分组,WHERE 过滤行,HAVING可以替代WHERE
//HAVING在分组后进行过滤,WHERE在分组前过滤
SELECT vend_id,COUNT(*) AS num_prods
FROM Products
WHERE prod_price>=4//WHERE先过滤
GROUP BY vend_id
HAVING COUNT(*)>=2//HAVING再过滤
//分组和排序
SELECT order_num,COUNT(*) AS items
FROM OrderItems
GROUP BY order_num//分组
HAVING COUNT(*) >=3
ORDER BY items,order_num//排序
//SELECT 子句顺序
SELECT
FROM
WHERE
GROUP BY
HAVING
ORDER BY