在美国和加拿大都有海岸线的五大湖的海岸线的名称和长度(按美国降序排列)是什么。
我使用的表格有三列,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可能会有所帮助,但已经在这里停留了一段时间
图片:
答案 0 :(得分:1)
如果您想使用聚合方法,那么我们可以尝试以下方法:
SELECT ON_LAKE, SUM(SHORELINE) AS SHORELINE
FROM SHORE
GROUP BY ON_LAKE
HAVING MIN(IN_COUNTRY) = 'Canada' AND MAX(IN_COUNTRY) = 'United States'
ORDER BY
SUM(CASE WHEN IN_COUNTRY = 'United States' THEN SHORELINE ELSE 0 END) DESC;
答案 1 :(得分:1)
尝试这样的事情:
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子句以计算美国的岸长。
答案 2 :(得分:0)
尝试一下,
SELECT ON_LAKE, sum(SHORELINE)
FROM SHORE
where IN_COUNTRY='Canada' and IN_COUNTRY='United States'
Group By ON_LAKE
ORDER BY sum(SHORELINE) DESC