什么是名称和海岸线的长度,在美国下降是在加拿大和美国的海岸线大湖的海岸线,秩序。
我使用该表有三列,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可以帮助,但已经被困在这里一会儿
图片:
尝试是这样的:
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子句来计算美国海岸的长度。
如果你想使用一个聚合的方法,那么我们可以试试这个:
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;
尝试这个 ,
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