可这是一个嵌套查询

问题描述 投票:0回答:3

什么是名称和海岸线的长度,在美国下降是在加拿大和美国的海岸线大湖的海岸线,秩序。

我使用该表有三列,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可以帮助,但已经被困在这里一会儿

图片:

sql sql-server tsql
3个回答
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子句来计算美国海岸的长度。


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;

enter image description here

Demo


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
© www.soinside.com 2019 - 2024. All rights reserved.