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表达式。
相关阅读
-
简讯:雨中情连年多次被罚:环保与安全...
《港湾商业观察》施子夫证监会公告显示,12月1日,雨中情防水技术集... -
微型电动车为谁而活?
实惠的价格外加呆萌小巧的车身造型,如今在一系列相关政策的引导下... -
焦点播报:从激光切割用户视角看50kW/12k...
2022年即将结束,万瓦激光仍是切割市场的主流。自6月起,创鑫激光在... -
重卡困境反转周期正悄然开始!
11月30日,以重型卡车为代表的上市公司领涨全市场,一汽解放强势涨... -
乌云正在笼罩小鹏汽车
对比蔚来和理想,小鹏今年过得很惨,尤其是下半年。现有车型产品需... -
天天快消息!宝尊电商太想脱离阿里巴巴
身为电商代运营行业老大,宝尊电商已连续五个季度亏损,今年前三季...