![](/img/trans.png)
[英]SQL Server : create a column based on the first occurrence of a value in another column
[英]Finding the maximum occurrence of a column value based on another column in SQL
我有下表:
Keyword_name Conference_name
------------|-------------
value1 | conference1
value1 | conference1
value2 | conference1
value3 | conference1
value2 | conference2
value1 | conference3
.........................
現在,我想為每個會議查找關鍵字的最大出現次數。 我怎樣才能做到這一點?
所需的結果應如下所示:
Conference_name | Keyword_maximum_occurrence
conference1 | value1
conference2 | value2
這在PostgreSQL中稱為mode()
有序集合聚合函數:
SELECT
Conference_name,
mode() WITHIN GROUP (ORDER BY Keyword_name) AS Keyword_maximum_occurrence
FROM my_table
GROUP BY Conference_name
MODE()
(單個結果)與RANK()
(多個結果)的注釋 與基於RANK()
的查詢不同( 就像在GurV的答案中一樣 ),我的答案將僅根據ORDER BY
子句返回第一個模式。 因此,如果有多個關鍵字出現頻率相同,則此答案將僅返回第一個。 根據您的要求,這可能仍然可以。
嘗試這個:
select
conference_name,
keyword_name
from (
select
conference_name,
keyword_name,
rank() over (partition by conference_name order by count(*) desc) rnk
from your_table
group by
conference_name,
keyword_name
) t where rnk = 1;
它根據Conference_name中同一關鍵字的出現次數分配排名,然后進行過濾以獲取排名最高的行。
演示 @ RexTester
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.