根据 MySQL 中的一个数字列检索排序数据
Retrieve sorted data based on one numeric column in MySQL
我在 MySQL 数据库中有一个 table 喜欢的附加图像。
我正在尝试检索基于 SUM(freight) 列的排序数据。为此,我使用了以下查询。
SELECT 船舶国家
来自国家详情
按船舶国家分组
ORDER BY SUM(运费) ASC
当我 运行 时,我得到如下结果。
如果我 运行 下面的查询我得到如下结果。还好。
SELECT ShipCountry, ShipCity
来自国家详情
按 ShipCountry、ShipCity 分组
ORDER BY SUM(运费), ShipCity ASC
我需要的不是这个结果,如下所示。按条款排序 SUM(Freight) 应仅考虑 ShipCountry。它不应同时考虑 ShipCountry 和 ShipCity。我的预期结果是
如何通过MySQL查询得到这个结果?
在SQL中我们可以实现如下查询。
Select ShipCountry,ShipCity 来自 Countrydetails group by ShipCountry,ShipCity Order by SUM(SUM(freight)) over(partition by ShipCountry),Shipcity Asc.
我们在 MySQL 中需要这样的等效查询。
您可以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
这将输出
Argentina | Buenos Aires
Spain | Portland
Norway | Butte, Stavern
Italy | Albuquerque
Portugal | Lisboa
Poland | Elgin, Seattle, Walla Walla, Warszawa
显示时,您可以用逗号分隔字符串并打印您期望的输出。
试试这个:
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 ;
它包含一个子查询,但应该为每个国家/地区对生成单独的一行。
我在 MySQL 数据库中有一个 table 喜欢的附加图像。
我正在尝试检索基于 SUM(freight) 列的排序数据。为此,我使用了以下查询。
SELECT 船舶国家 来自国家详情 按船舶国家分组 ORDER BY SUM(运费) ASC
当我 运行 时,我得到如下结果。
如果我 运行 下面的查询我得到如下结果。还好。
SELECT ShipCountry, ShipCity 来自国家详情 按 ShipCountry、ShipCity 分组 ORDER BY SUM(运费), ShipCity ASC
我需要的不是这个结果,如下所示。按条款排序 SUM(Freight) 应仅考虑 ShipCountry。它不应同时考虑 ShipCountry 和 ShipCity。我的预期结果是
如何通过MySQL查询得到这个结果?
在SQL中我们可以实现如下查询。
Select ShipCountry,ShipCity 来自 Countrydetails group by ShipCountry,ShipCity Order by SUM(SUM(freight)) over(partition by ShipCountry),Shipcity Asc.
我们在 MySQL 中需要这样的等效查询。
您可以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
这将输出
Argentina | Buenos Aires
Spain | Portland
Norway | Butte, Stavern
Italy | Albuquerque
Portugal | Lisboa
Poland | Elgin, Seattle, Walla Walla, Warszawa
显示时,您可以用逗号分隔字符串并打印您期望的输出。
试试这个:
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 ;
它包含一个子查询,但应该为每个国家/地区对生成单独的一行。