假設我有一張桌子,像這樣:
我的表
Name | Number
-----------------
John | 3
Jacob | 2
Mark | 5
John | 62
Kathy | 1
John | 1
Alex | 38
Mark | 44
如何獲取名稱在給定列中出現的次數,然后將該數字顯示到新列?
例如,這將是我想要的輸出:
Name | Number | NoEntries
------------------------------
John | 3 | 3
Jacob | 2 | 1
Mark | 5 | 2
John | 62 | 3
Kathy | 1 | 1
John | 1 | 3
Alex | 38 | 1
Mark | 44 | 2
本能地,我想使用類似的東西
SELECT Name, COUNT(Name) AS NoEntries
FROM MyTable
GROUPBY Name;
但是,這不僅省略了 Number 列,而且也不會回傳所有結果。我想列出所有結果,不排除任何行,然后簡單地放置一列,其中包含 Name 在表中出現的次數。
搜索stackoverflow(和谷歌),我發現了其中一些結果:
計算 SQL Server 中的重復值并顯示為另一列
計算列中的重復資料并每行顯示一次 - SQL
在 SQL 表中查找重復值
這些鏈接以及我在網上找到的所有內容的問題在于它們都在使用 GROUP BY。有沒有一種簡單、干凈的方法來獲取表中每個名稱的計數,然后將數字寫入每一行的列?
uj5u.com熱心網友回復:
也許你只需要一個視窗COUNT():
SELECT Name, Number, COUNT(Name) OVER (PARTITION BY Name) AS NoEntries
FROM MyTable
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/415820.html
標籤:
