SQL-数据分组与过滤
A、分组语句:GROUP BY
1、如果分组列中包含NULL值行,会将其作为一个分组返回;
2、GROUP BY语句必须位于WHERE 子句之后,ORDER BY子句之前;
3、group By 子句中列出的每一列都必须是检索列或是有效表达式,不能是聚集函数。
若在select中使用表达式,须在GROUP BY子句中指定相同的表达式,不能使用别名。
B、过滤分组语句:HAVING
1、所有适用于WHERE的规则适用于HAVING
2、两者差别在于,前者过滤行,后者配套GROUP BY过滤组
3、基于过滤分组的作用,不能指定列名,或者某列
C、目前所学各子句之间的前后次序:
SELECT 要返回的咧或者表达式
FROM 从中检索数据的表
WHERE 行级过滤
GROUP BY 分组说明
HAVING 组级过滤
ORDER BY 输出排序
例子:
1、SELECT order_num, COUNT(*)AS order_lines #order_num 为订单号,并指定别名order_lines订单行数;
FROM Orderitems
GROUP BY order_num
ORDER BY order_lines; #对所有订单号进行分组返回行数并按订单号排序;
2、
SELECT order_num, SUM(item_price*quantity) AS total_price FROM OrderItems GROUP BY order_num HAVING SUM(item_price*quantity) >= 1000 ORDER BY order_num; #按订单号排序并返回所有订单中总价格大于1000的订单号;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构