PG/GP group by expression语法
GROUP BY在关系数据库中比较常见,他是SQL和PG不可或缺的一个语法。除了可以使用简单字段分组外,还可以使用表达式以更加复杂的方式进行分组。
首先看下简单的GROUP BY语句:
postgres=# select *from t1;
id1 | name | class | score
-----+----------+-------+-------
1 | math | 1 | 50
2 | math | 2 | 90
3 | math | 1 | 70
5 | chinese | 1 | 50
6 | chinese | 2 | 60
4 | chinese | 2 | 60
7 | physical | 1 | 90
8 | physical | 2 | 80
(8 行记录)
如果我们想看下某一科目平均分,那么可以使用上述方法进行查询。Group by 1和group by name是相同的,只是语法的不同。
现在看下group by表达式:
没有分组情况下平均值如上所示。还可以使用表达式来动态确定组:
在这种情况下,得到2组,一组大于60的行,一组小于60的行。因此两组的名称为“true”(>60)或“false”(<60)。可以使用任何表达式自行计算这些组。
上面的例子中,我们看下90分和其他分数的人数。不需要再SELECT子句中列出分组条件。当然也可以使用完整的SQL:
再看下执行计划:
另外,HAVING子句中可以使用别名码?
显然是不行的,需要显式使用整个表达式。并且也可以使用不同聚合函数:
这就是group by表达式。
原文标题 : PG/GP group by expression语法

最新活动更多
-
3月27日立即报名>> 【工程师系列】汽车电子技术在线大会
-
精彩回顾立即查看>> 2024工程师系列—工业电子技术在线会议
-
精彩回顾立即查看>> 【线下论坛】华邦电子与莱迪思联合技术论坛
-
精彩回顾立即查看>> 【线下论坛】华邦电子与恩智浦联合技术论坛
-
精彩回顾立即查看>> 【在线会议】多物理场仿真助跑新能源汽车
-
精彩回顾立即查看>> 【限时免费下载】TE暖通空调系统高效可靠的组件解决方案
推荐专题
- 1 RTX 5090D首发评测:原生性能提升30%!
- 2 首发酷睿Ultra 9 285H!华硕灵耀14 2025评测:远胜对手
- 3 影驰RTX 5080圣刃OC显卡评测:小尺寸高性能 高端玩家完美之选
- 4 索泰RTX 5090D SOLID OC显卡评测
- 5 耕升RTX 5080追风OC评测:超频后性能追平RTX 4090D
- 6 致态TiPro9000 2TB评测:长江首款PCIe 5.0 SSD 登场即最强
- 7 蓝戟锐炫B570 Photon 10GB评测:1949元超值主流显卡 只减规格不减特性
- 8 NAND芯片持续跌,中国厂商却逆市扩产
- 9 2024年,VR/MR行业加速洗牌,从17款硬件看五大产业趋势
- 10 汽车座舱 WiFi 连接模块的技术细节
发表评论
请输入评论内容...
请输入评论/评论长度6~500个字
暂无评论
暂无评论