我在 MySql 中有一个表,例如:
URL Browser
A Chrome
B Chrome
C Firefox
A Chrome
A Firefox
A Opera
A Chrome
B Chrome
B Firefox
C Tor
URL
列的数据范围很广,但 Browser 列的数据范围有限。我想在 URL 列上聚合并按降序获取列表中每个浏览器的最高计数,例如:
URL FrequentlyUsedBrowser
A [(Chrome,3),(Firefox,1),(Opera,1)]
B [(Chrome,2),(Firefox,1)]
C [(Chrome,1),(Tor,1)]
我一直在为它编写 SQL
以使用窗口分区来获取每个浏览器的一个条目的计数,但无法将其放入列表中。
最佳答案
这是您的查询。这可以使用 group_concat()
select url
, concat('[', group_concat('(', browser, ',', ct, ')'), ']') as FrequentlyUsedBrowser
from
(select count(1) ct, url, browser from test
group by url, browser) t1
group by url
参见 dbfiddle
关于MySQL : How to aggregate table column into a list and count?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58870475/