我在MySQL数据库中有一个像附加图像的表。
我正在尝试根据SUM(运费)列检索已排序的数据。为此,我使用了以下查询。
选择ShipCountry 来自CountryDetails GROUP BY ShipCountry 按订单(运费)ASC
当我运行时,我得到的结果如下。
如果我运行以下查询,我会得到如下结果。没关系。
选择ShipCountry,ShipCity 来自CountryDetails GROUP BY ShipCountry,ShipCity 按订单(运费),ShipCity ASC
而不是这个,我需要一个像下面这样的结果。按顺序,SUM(Freight)应仅考虑ShipCountry。它不应该同时考虑ShipCountry和ShipCity。我的预期结果是
如何通过MySQL查询实现此结果?
在SQL中我们可以实现如下查询。选择ShipCountry,通过ShipCountry从Countrydetails组发货ShipCity,按SUM(SUM(货运))发货的ShipCity顺序(ShipCountry分区),Shipcity Asc。
我们在MySQL中需要这样的等效查询。
答案 0 :(得分:1)
您可以GROUP BY ShipCountry
和GROUP_CONCAT
城市
SELECT
ShipCountry,
GROUP_CONCAT(ShipCity ORDER BY ShipCity ASC) AS cities,
SUM(freight) AS total_country_freight
FROM
Countrydetails
GROUP BY
ShipCountry
ORDER BY
total_country_freight ASC
这将输出
阿根廷|布宜诺斯艾利斯
西班牙|波特兰
挪威|巴特,斯塔文
意大利|阿尔伯克基
葡萄牙|里斯本
波兰|埃尔金,西雅图,沃拉沃拉,华沙
显示时,您可以用逗号分割字符串并打印预期的输出。
答案 1 :(得分:1)
试试这个:
SELECT t1.ShipCountry, t1.ShipCity, t2.countrysum FROM CountryDetails t1
join ( select ShipCountry, SUM(freight) countrysum from CountryDetails
group by ShipCountry )
as t2 on t1.ShipCountry = t2.ShipCountry
GROUP BY ShipCountry, ShipCity
ORDER BY countrysum ASC ;
它包含一个子查询,但应为每个国家/城市对生成一个单独的行。