gpt4 book ai didi

mysql - 按组计数列出 SQL 数据

转载 作者:行者123 更新时间:2023-11-29 13:43:02 25 4
gpt4 key购买 nike

我希望你能帮我解决一个我似乎无法理解的 SQL 语句。

我有一个表格,其中包含访问列表,其中包含访问的国家/地区和日期,例如;

  • 英国,2009 年 11 月 1 日
  • 德国,2010 年 6 月 8 日
  • 弗兰,2011 年 9 月 10 日
  • 英国,2011 年 10 月 11 日

等等

我想提取数据,以便获得如下所示的表格列表

访问次数 - 国家/地区列表

  • 23 - 英国
  • 10 - 法国、德国
  • 4 - 捷克共和国、美国、加拿大
  • 1 - 波兰、塞尔维亚、阿根廷、新西兰

数据显示我已去过捷克共和国、美国和加拿大 4 次

以及查询

select * from 
(
select count(*) as "trips", country from trip_view
group by country
order by 1 desc
) as a

返回数据

  • 23 英国
  • 10 法国
  • 10 德国
  • 4 捷克共和国
  • 4 美国
  • 4 加拿大
  • 等等

所以我需要一种外部 SQL 组,但如果我执行以下操作

select * from 
(
select count(*) as "trips", country from trip_view
group by country
order by 1 desc
) as a
group by trips

那么每个国家/地区我只能获得 1 个条目。即

  • 23 英国
  • 10 法国
  • 4 捷克共和国
  • 等等

因此,对于每一行,我只列出了 1 个国家/地区,而不是全部。即第 2 行应显示法国和德国,第 3 行应显示捷克、美国和加拿大

有什么想法如何在 mysql 中做到这一点吗?

谢谢

最佳答案

使用 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,USA

Live DEMO.

关于mysql - 按组计数列出 SQL 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17831073/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com