分组数据

数据分组

分组允许把数据分为多个逻辑组,以便能对每个组进行聚聚计算

创建分组

分组在SELECT语句的GROUP BY子句中建立
SELECT vend_id, COUNT(*) AS num_prods
FROM products
GROUP BY vend_id;
GROUP BY子句指示MySQL分组数据,然后对每个组而不是整个结果集进行聚聚
具体使用GROUP BY子句前,需知道一些重要规定
- GROUP BY子句可包含任意数目的列
- 如在GROUP BY子句中嵌套了分组,数据将在最后规定的分组上汇总
- GROUP BY子句中列出的列必须是检索列或有效的表达式[不可为聚聚函数]
- GROUP BY必须在WHERE子后,ORDER BY之前

过滤分组

HAVING
HAVING支持所有WHERE操作符

SELECT cust_id, COUNT(*) AS orders
FROM orders
GROUP BY cust_id
HAVING COUNT(*) >= 2;

WHERE在数据分组前过滤
HAVING在分组后过滤
SELECT vend_id, COUNT(*) AS num_prods
FROM products
WHERE prod_price >= 10
GROUP BY vend_id
HAVING COUNT(*) >= 2;

分组和排序

SELECT order_num, SUM(quantity*item_price) AS ordertotal
FROM orderitems
GROUP BY order_num
HAVING SUM(quantity*item_price)>=50;
ORDER BY ordertotal;

子句顺序

SELECT
FROM
WHERE
GROUP BY
HAVING
ORDER BY
LIMIT

猜你喜欢

转载自blog.csdn.net/x13262608581/article/details/108966384
今日推荐