我希望您能帮助我处理一个我似乎搞不懂的SQL语句。
我有一张桌子,上面有访问的名单,访问的国家和日期,例如;
等。
我希望提取数据,以便得到如下所示的表列表
访问时间-国家名单
所以数据显示我去了捷克,美国和坎达
和查询
select * from
(
select count(*) as "trips", country from trip_view
group by country
order by 1 desc
) as a返回数据
因此,我需要在外部SQL上设置一个组,但是如果我执行以下操作
select * from
(
select count(*) as "trips", country from trip_view
group by country
order by 1 desc
) as a
group by trips然后我只得到一个国家的参赛资格。即
因此,对于每一行,我只列出一个国家,而不是所有国家。第二排应显示法国和德国,第三排应显示捷克、美国和加拿大
有什么想法吗?如何在mysql中做到这一点?
谢谢
发布于 2013-07-24 10:34:04
在country列上使用GROUP_CONCAT应该会产生您想要的结果:
SELECT trips,
GROUP_CONCAT(country) AS country
FROM (
SELECT COUNT(*) AS "trips",
country
FROM trip_view
GROUP BY country
) a
GROUP BY trips
ORDER BY 1 DESC输出:
TRIPS COUNTRY
23 United Kingdom
10 France,Germany
4 Czech Republic,Canada,USALive DEMO.
https://stackoverflow.com/questions/17831073
复制相似问题