MySQL:如何将表列聚合为列表并计数?

Suh*_*med 1 mysql sql

我在MySql中有一个表,如:

URL       Browser
A         Chrome
B         Chrome 
C         Firefox
A         Chrome
A         Firefox
A         Opera
A         Chrome
B         Chrome
B         Firefox
C         Tor
Run Code Online (Sandbox Code Playgroud)

URL列具有广泛的数据,但“浏览器”列具有有限的一组。我想汇总在URL列上,并按降序获得列表中每个浏览器的最高计数,例如:

URL      FrequentlyUsedBrowser 
A        [(Chrome,3),(Firefox,1),(Opera,1)]
B        [(Chrome,2),(Firefox,1)]
C        [(Chrome,1),(Tor,1)] 
Run Code Online (Sandbox Code Playgroud)

我一直在写SQL它,以便使用窗口分区将计数作为每个浏览器的一个条目,但无法将其添加到列表中。

ϻᴇᴛ*_*ᴛᴀʟ 5

这是您的查询。这是可以实现的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
Run Code Online (Sandbox Code Playgroud)

参见dbfiddle