簡體   English   中英

MySQL:如何使用分組依據顯示計數為0的行?

[英]MySQL: how to show rows where count is 0 using group by?

MySQL我有一個表,兩列column'N'和column'V','V'的值是1或0(可能是其他值,所以不要使用SUM())。

mysql> select * from counter;
+------+------+
| N    | V    |
+------+------+
| A    |    0 |
......
| D    |    1 |
+------+------+

我希望計算一下0和1,如下所示:

mysql> select N, V, count(V) from counter group by N,V;
+------+------+----------+
| N    | V    | count(V) |
+------+------+----------+
| A    |    0 |        2 |
| A    |    1 |        7 |
| B    |    0 |        7 |
| B    |    1 |        2 |
| C    |    0 |        3 |
| D    |    1 |        3 |
+------+------+----------+

問題是我想顯示count(V)為0的行。在這種情況下,我的預期結果應如下所示:

+------+------+----------+
| N    | V    | count(V) |
+------+------+----------+
| A    |    0 |        2 |
| A    |    1 |        7 |
| B    |    0 |        7 |
| B    |    1 |        2 |
| C    |    0 |        3 |
| C    |    1 |        0 | **
| D    |    0 |        0 | **
| D    |    1 |        3 |
+------+------+----------+

我該如何實現? 如果桌子很大,如何獲得最佳性能?

這是一個使用cross joinNV之間創建cartesian product選項。 然后,您可以使用outer join來獲取所有結果:

select t.n, t.v, count(c.n)
from (select distinct t1.n, t2.v
      from counter t1 cross join counter t2) t left join 
   counter c on t.n = c.n and t.v = c.v
group by t.n, t.v

暫無
暫無

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

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