[英]Postgres get count but group by another column
如果我有一張像這樣的桌子
customer liked
1 true
2 true
3 true
1 true
2 false
我如何計算總喜歡但按客戶分組,所以我最終得到的結果如下:
customer total_likes
1 2
2 1
3 1
GROUP BY
和條件COUNT
應該:
SELECT customer, COUNT(CASE WHEN liked = 'true' THEN 1 END) AS likes
FROM yourtable
group by customer
如果它是布爾列,請執行以下操作:
SELECT customer, COUNT(CASE WHEN liked THEN 1 END) AS likes
FROM yourtable
group by customer
在Postgres中,您可以使用簡寫從布爾值轉換為整數:
select customer, sum(liked::int) as total_likes
from t
group by customer;
請注意,這將返回所有客戶 ,而不僅僅是那些喜歡的客戶 。 如果您只想要喜歡的客戶,那么where
子句是合適的:
select customer, count(*)
from t
where liked
group by customer;
SELECT CUSTOMER, COUNT(LIKED) AS TOTAL_LIKES
FROM TABLE
WHERE LIKED = 'true'
GROUP BY CUSTOMER
我假設liked
是一個布爾類型字段,
SELECT customer, COUNT(liked) AS total_likes
FROM table_name
WHERE liked is true
GROUP BY customer
在COUNT
函數內使用CASE
語句。
SELECT customer, COUNT(CASE WHEN liked = 'true' THEN 1 ELSE NULL END) AS total_likes
FROM yourtable
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.