[英]postgresql group by and inner join
我希望SQL中的查詢同時執行INNER JOIN
和GROUP BY
。 我嘗試了以下不起作用:
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 by
或者having
子句之前)。
然后,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;
但具有相同first_name的客戶將被分組,這可能不是您想要的。
所以相反
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;
您想按customer_id分組,但獲取first_name?
SELECT customer.first_name, SUM(payment.amount)
FROM customer
INNER JOIN payment
ON payment.customer_id = customer.customer_id
GROUP BY customer.customer_id, customer.first_name;
您也可以在派生表中進行聚合,然后您可以從客戶那里獲得其他列:
SELECT customer.first_name, SumPayment
FROM customer
INNER JOIN
(
SELECT customer_id,
SUM(payment.amount) AS SumPayment
FROM payment
GROUP BY customer_id
) AS payment
ON payment.customer_id = customer.customer_id
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.