簡體   English   中英

postgresql group by和inner join

[英]postgresql group by and inner join

我希望SQL中的查詢同時執行INNER JOINGROUP 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM