我想要一个SQL查询,它同时执行INNER JOINGROUP BY.我try 了以下不起作用的方法:

SELECT customer.first_name, SUM(payment.amount)
FROM customer
GROUP BY customer.customer_id
INNER JOIN payment
ON payment.customer_id = customer.customer_id;

提前谢谢!

推荐答案

首先,GROUP BY出现在查询的末尾(如果有的话,就在order byhaving子句之前).

然后,select中不在聚合函数中的所有字段都必须在group by子句中.

所以

SELECT customer.first_name, SUM(payment.amount)
FROM customer
INNER JOIN payment
ON payment.customer_id = customer.customer_id
GROUP BY  customer.first_name;

但是名字相同的客户会被分组,这可能不是你真正想要的.

所以 rather

SELECT  customer.first_name, SUM(payment.amount)
FROM customer
INNER JOIN payment
ON payment.customer_id = customer.customer_id
GROUP BY  customer.first_name, customer.customer_id;

Postgresql相关问答推荐

使用regexp获取表名

PostgreSQL:函数结果表内冲突(...)上的";中的字段名称

在Docker容器内的Postgres,如何通过Promail将JSON登录到Loki?

PostgreSQL(container)中使用80K子分区表处理共享内存不足错误

PostGresql :正则表达式 Select 其中只有一个正斜杠的行

是否可以使用 pgAdmin4 自动格式化/美化 SQL 查询?

PostgreSQL 中基于时间戳的移动平均线

使用 ON CONFLICT 从 INSERT 返回行,无需更新

等效于 Postgresql 中的 FOUND_ROWS() 函数

如何在 psycopg2 中使用服务器端游标

无法向 postgresql 数据库授予用户权限(对于 rails 应用程序)

如何引用使用 ON CONFLICT 中的函数的唯一索引?

PostgreSQL:使用 psql 命令行实用程序时 Windows 上的编码问题

理解 Postgres 行大小

如何语法判断 PostgreSQL 配置文件?

由于外键约束无法删除对象

null 计算结果为 false 的情况

查询 JSON 列中的数组元素

没有函数匹配给定的名称和参数类型

pg_restore 目录错误