侵权投诉
技术:
GPU/CPU 传感器 基础元器件 网络通信 显示 交互技术 电源管理 材料 操作系统 APP 云技术 大数据 人工智能 制造 其它
应用:
可穿戴设备 智能家居 VR/AR 机器人 无人机 手机数码 汽车 平衡车/自行车 医疗健康 运动设备 美颜塑身 早教/玩具 安防监控 智能照明 其它
订阅
纠错
加入自媒体

PG/GP group by expression语法

2022-04-19 11:49
yzsDBA
关注

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语法

声明: 本文由入驻维科号的作者撰写,观点仅代表作者本人,不代表OFweek立场。如有侵权或其他问题,请联系举报。

发表评论

0条评论,0人参与

请输入评论内容...

请输入评论/评论长度6~500个字

您提交的评论过于频繁,请输入验证码继续

暂无评论

暂无评论

    智能硬件 猎头职位 更多
    文章纠错
    x
    *文字标题:
    *纠错内容:
    联系邮箱:
    *验 证 码:

    粤公网安备 44030502002758号