首页 > 解决方案 > 这可以是嵌套查询吗

问题描述

在加拿大和美国都有海岸线的五大湖中,海岸线的名称和长度是什么,按美国海岸线的降序排列。

我使用的表格有三列,IN_COUNTRY(湖泊在哪里,美国或加拿大),ON_LAKE(湖泊的名称,如密歇根湖)和SHORELINE(每个国家的海岸线长度)

我已经尝试过下面列出的 SQL,但我无法SHORELINE在美国按长度排序。如您所见,我现在只能通过两国海岸线的组合来订购它们。

SELECT ON_LAKE, sum(SHORELINE) AS SHORELINE
FROM SHORE
GROUP BY ON_LAKE
HAVING count(IN_COUNTRY) > 1
ORDER BY SHORELINE DESC

我认为嵌套 SQL 可能会有所帮助,但已经在这里停留了一段时间

图片:

在此处输入图像描述

标签: sqlsql-servertsql

解决方案


尝试这样的事情:

SELECT ON_LAKE, sum(SHORELINE) AS SHORELINE
FROM SHORE
GROUP BY ON_LAKE
HAVING count(IN_COUNTRY) > 1
ORDER BY sum(CASE WHEN IN_COUNTRY='United States' THEN SHORELINE ELSE 0 END) DESC

我只更改了 ORDER BY 子句来计算美国的海岸长度。


推荐阅读