【发布时间】:2021-10-13 10:32:59
【问题描述】:
我最近开始使用 SQL,我有点困惑。我想应用此查询,但添加一个日期列:
SELECT CONCAT(first_name, ' ', last_name) AS Full_name,
SUM(p.amount) Pay_amount
FROM customer c
JOIN payment p ON c.customer_id = p.customer_id
GROUP BY 1
ORDER BY 2 DESC
LIMIT 10;
但是每当我添加日期列时,结果就会完全改变为具有不同日期的重复客户。
SELECT CONCAT(first_name, ' ', last_name) AS Full_name,
SUM(p.amount) Pay_amount,
payment_date
FROM customer c
JOIN payment p ON c.customer_id = p.customer_id
GROUP BY 1, 3
ORDER BY 2 DESC
LIMIT 10;
编辑:这是我正在使用的示例数据库:https://www.postgresqltutorial.com/postgresql-sample-database/
【问题讨论】:
-
当有多个约会时,你想要什么值?同时标记您正在使用的数据库。
-
您的 GROUP BY 表示您需要每个 Full_name/payment_date 组合。如果您只需要一个 payment_date 作为 Full_name,您必须决定哪一个(例如第一个或最后一个)。
-
您可能想查看 PostgreSql 函数,如 Grouping Sets。 postgresql.org/docs/10/…
标签: sql postgresql group-by subquery