我使用Postgresql。我有一个&像这样的表
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
但这不起作用。
感谢您的帮助。我对此很愚蠢。
答案 0 :(得分:1)
请尝试org.wso2.siddhi.core.exception.ExecutionPlanRuntimeException: Cannot Execute Insert/Update. Null value detected for attributemeta_DATA
; COUNT(b_table.id)
计算遇到的所有非空值,这就是为什么(我猜)你为不匹配的COUNT
得到1;因为不匹配的值在其行中仍然有自己的值。
编辑:此外,我们的回答也是正确的,因为您需要free_values
。 否则,您将获得JOIN的总行数,并有效地随机选择group by free_value
。
答案 1 :(得分:1)
试
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
答案 2 :(得分:0)
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
尝试此查询。