分组数据求众数,分组数据求中位数
墨初 知识笔记 119阅读
分组数据 创建分组过滤分组SQL 子句顺序
创建分组

s q l sql sql 中使用 GROUP BY 子句对数据进行分组。分组通常与聚合函数一起使用以对每个组内的数据执行聚合操作
e . g . e.g. e.g. 按照客户分组计算每个客户的订单总金额

SELECT customer_id, SUM(order_amount) AS total_amountFROM OrdersGROUP BY customer_id;
-- 结果如下customer_idtotal_amount-----------------------BRS012314.2DLL0141233FNG02991.32
GROUP BY 子句对每个组进行聚集所以此时 SUM()
函数的值将是每个“组”的金额总值而不是整个数据库中的总金额如果分组中包含具有 NULL 值的行则 NULL 将作为一个分组返回。如果列中有多行 NULL 值它们将分为一组GROUP BY 子句必须出现在 WHERE 子句之后ORDER BY 子句之前。 过滤分组 实现分组过滤使用的关键词是 HAVING
HAVING 关键词的作用与 WHERE 关键词的作用一样只不过 WHERE 作用于行HAVING 作用于组。
e . g . e.g. e.g. 过滤出 Orders 表中 ≥ 2 个订单的顾客信息
SELECT cust_id, COUNT(*) AS order_numFROM OrdersGROUP BY cust_idHAVING COUNT(*) > 2;
注意
不要理解为有了 HAVING 不能有 WHERE两者可以共存 e . g . e.g. e.g. 过滤出过去 12 个月内 ≥ 2 个订单的顾客信息
SELECT cust_id, COUNT(*) AS order_numFROM OrdersWHERE order_date > DATE_SUB(NOW(), INTERVAL 12 MONTH)GROUP BY cust_idHAVING COUNT(*) > 2;
WHERE 语句过滤出 12 个月内的所有订单HAVING 语句过滤出所有大于 2 个订单的顾客 SQL 子句顺序 本节内容增添了两个 SQL 子句关于子句的顺序需要注意
–
以上