簡體   English   中英

查詢聯接並在PostgreSQL上計數

[英]Query JOIN And Count ON Postgresql

我使用Postgresql。 我有一個這樣的&b桌子

a_table
+--------+---------------+
|   id   |   free_value  |
+--------+---------------+
|   1    |      3        |
|   2    |      2        |
|   3    |      1        |
|   4    |      3        |
|   5    |      2        |
|   6    |      8        |
|   7    |      4        |
+--------+---------------+

b_table
+--------+---------------+
|   id   |   a_table_id  |
+--------+---------------+
|   1    |      2        |
|   2    |      2        |
|   3    |      6        |
|   4    |      5        |
|   5    |      3        |
|   6    |      3        |
+--------+---------------+

我可以在b_table和desc上寫關於count free_value的查詢來像這樣計數嗎?

count_free_value_table
+----------------+-----------+
|   free_value   |   count   |
+----------------+-----------+
|       2        |     3     |
|       1        |     2     |
|       8        |     1     |
|       3        |     0     |
|       4        |     0     |
+----------------+-----------+

我嘗試使用SELECT free_value, count(free_value) from a_table LEFT JOIN b_table ON a_table.id = b_table.a_table_id但這是行不通的。

感謝您的任何幫助。 我為此感到愚蠢。

嘗試使用COUNT(b_table.id)代替; COUNT計算遇到的所有非空值,這就是為什么(我猜)您為不匹配的free_values得到1; 因為不匹配的值在行中仍具有自己的值。

編輯:此外,are的注釋和Alim的答案也是正確的,因為您需要group by free_value 否則,您將獲得JOIN的總行,以及有效地隨機選擇的free_value

嘗試

SELECT free_value, count(free_value)
from a_table LEFT JOIN b_table ON a_table.id = b_table.a_table_id 
group by free_value
SELECT free_value, count( b_table.id ) count
FROM a_table
LEFT JOIN b_table ON a_table.id = b_table.a_table_id
GROUP BY free_value
ORDER BY count DESC

試試這個查詢。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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