PG/GP group by expression语法

简介: 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 1group by name是相同的,只是语法的不同。

现在看下group by表达式:

没有分组情况下平均值如上所示。还可以使用表达式来动态确定组:

在这种情况下,得到2组,一组大于60的行,一组小于60的行。因此两组的名称为“true(>60)或“false(<60)。可以使用任何表达式自行计算这些组。

上面的例子中,我们看下90分和其他分数的人数。不需要再SELECT子句中列出分组条件。当然也可以使用完整的SQL

再看下执行计划:

另外,HAVING子句中可以使用别名码?

显然是不行的,需要显式使用整个表达式。并且也可以使用不同聚合函数:

这就是group by表达式。

目录
相关文章
|
8月前
|
SQL Oracle 关系型数据库
实时计算 Flink版操作报错之遇到 "The column 'AdminCode' is referenced as PRIMARY KEY, but a matching column is not defined in table 'tx.dbo.MS_tkBa'!" 是什么情况
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
数据库
解决which is not functionally dependent on columns in GROUP BY clause;...sql_mode=only_full_group_by
解决which is not functionally dependent on columns in GROUP BY clause;...sql_mode=only_full_group_by
312 0
|
存储 SQL 关系型数据库
1055 - Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column的解决办法
1055 - Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column的解决办法
261 0
|
关系型数据库 MySQL Windows
Mysql (ONLY_FULL_GROUP_BY) Expression #1 of SELECT list is not in GROUP BY ...
Mysql (ONLY_FULL_GROUP_BY) Expression #1 of SELECT list is not in GROUP BY ...
97 0
PG12/GP7操作符+的实现
PG12/GP7操作符+的实现
67 0
|
SQL 关系型数据库 MySQL
解决Mysql5.7以上版本, 使用group by抛出Expression #1 of SELECT list is not in GROUP BY clause and contains no异常
解决Mysql5.7以上版本, 使用group by抛出Expression #1 of SELECT list is not in GROUP BY clause and contains no异常
135 0
|
JavaScript 关系型数据库 PostgreSQL
1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'information_schema.PROFILING.SEQ' which is not functionally dependent on columns in GROUP BY clause
1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'information_schema.PROFILING.SEQ' which is not functionally dependent on columns in GROUP BY clause
211 0
1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'information_schema.PROFILING.SEQ' which is not functionally dependent on columns in GROUP BY clause
|
SQL 关系型数据库 MySQL
MySQL:The used SELECT statements have a different number of columns
执行SQL报错:The used SELECT statements have a different number of columns
801 0
MySQL:The used SELECT statements have a different number of columns
|
SQL 前端开发 关系型数据库
MySQL中关于GROUP_CONCAT(expr)函数的使用
MySQL中的:GROUP_CONCAT(expr)函数是将某一字段的值按指定的字符进行累加,系统默认的分隔符是逗号,可以累加的字符长度为1024字节。
304 0