簡體   English   中英

SQL 計算每行的不同值

[英]SQL count distinct values for each row

我有一張看起來像這樣的桌子

+-----+---------+
|Group|Value    |
+-----+---------+
|A    |1        |
+-----+---------+
|B    |2        |
+-----+---------+
|C    |1        |
+-----+---------+
|D    |3        |
+-----+---------+

我想在我的 select 命令中添加一個列,該列根據值對 GROUP 進行計數,如下所示:

+-----+---------+---------+
|Group|Value    | COUNT   |
+-----+---------+---------+
|A    |1        |2        |
+-----+---------+---------+
|B    |2        |1        |
+-----+---------+---------+
|C    |1        |2        |
+-----+---------+---------+
|D    |3        |1        |
+-----+---------+---------+

在此示例中,值 1 獲得兩組 A 和 C 其他值。

另外,是否可以考慮 VALUES 和 GROUP 的所有值,即使 WHERE 在 select 查詢中過濾掉了其中的一些值?

你想要一個 window function:

select t.*, count(*) over (partition by value) as count
from t;

如果查詢有where子句,就會出現問題。 where適用於 window function。所以你需要一個子查詢來計算:

select t.*
from (select t.*, count(*) over (partition by value) as count
      from t
     ) t
where . . .;

或者在某些情況下相關子查詢可能很方便:

select t.*,
       (select count(*) from t t2 where t2.value = t.value) as count
from t
where . .  .;

暫無
暫無

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

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