Postgresql:从临时表中获取最大值?
因此,我需要从给定的临时表中获得最大值:Postgresql:从临时表中获取最大值?,sql,postgresql,common-table-expression,Sql,Postgresql,Common Table Expression,因此,我需要从给定的临时表中获得最大值: WITH country_sold AS ( SELECT l.country, sum(r.sold) as count FROM Label as l, released as r WHERE l.label_name = r.label_name GROUP BY l.country ) 请求SELECT*来自销售的国家/地区 回馈: Country Sold USA 3232322 England
WITH country_sold AS (
SELECT l.country, sum(r.sold) as count
FROM Label as l, released as r
WHERE l.label_name = r.label_name
GROUP BY l.country
)
请求SELECT*来自销售的国家/地区代码>
回馈:
Country Sold
USA 3232322
England 1232
现在的问题是,我如何从这个临时表中获得最大价值(显然,在这种情况下,美国的销量更高)
我试过:
从已售出的国家/地区选择最大(已售出)代码>
它给了我返回的最大值(来自美国的值),但我如何才能同时检索国家?当我尝试使用
SELECT country, max(sold) FROM country_sold GROUP BY country;
但这只会返回country_Sald的初始结果,只是使用不同的列名,如上所示:
Country max
USA 3232322
England 1232
我错过了什么
提前谢谢大家 切勿在FROM
子句中使用逗号。始终使用正确、明确、标准、可读的连接语法
只需使用orderby
和LIMIT
:
WITH country_sold AS (
SELECT l.country, sum(r.sold) as count
FROM Label l JOIN
released r
ON l.label_name = r.label_name
GROUP BY l.country
)
SELECT cs.*
FROM country_sold cs
ORDER BY count DESC
LIMIT 1;
您也不需要对此进行子查询或CTE:
SELECT l.country, sum(r.sold) as count
FROM Label l JOIN
released r
ON l.label_name = r.label_name
GROUP BY l.country
ORDER BY count DESC
LIMIT 1
切勿在FROM
子句中使用逗号。始终使用正确、明确、标准、可读的连接语法
只需使用orderby
和LIMIT
:
WITH country_sold AS (
SELECT l.country, sum(r.sold) as count
FROM Label l JOIN
released r
ON l.label_name = r.label_name
GROUP BY l.country
)
SELECT cs.*
FROM country_sold cs
ORDER BY count DESC
LIMIT 1;
您也不需要对此进行子查询或CTE:
SELECT l.country, sum(r.sold) as count
FROM Label l JOIN
released r
ON l.label_name = r.label_name
GROUP BY l.country
ORDER BY count DESC
LIMIT 1
请参见postgresql文档中的示例:
SELECT city FROM weather
WHERE temp_lo = (SELECT max(temp_lo) FROM weather)
这正是您想要的:
SELECT country FROM country_sold
WHERE sold = (SELECT max(sold) FROM country_sold)
请参见postgresql文档中的示例:
SELECT city FROM weather
WHERE temp_lo = (SELECT max(temp_lo) FROM weather)
这正是您想要的:
SELECT country FROM country_sold
WHERE sold = (SELECT max(sold) FROM country_sold)
with
不定义“临时表”。它被称为公共表表达式,不定义“临时表”。它被称为公共表表达式。顺便说一句,您的解决方案是有效的,一旦能够做到这一点,我将接受它(需要等待几分钟)。谢谢你花时间!如果你不介意关于逗号的问题,我想听到更多,除非你不介意。不必过于详细。谢谢@普罗米修斯。逗号是连接表的一种古老语法。正确的JOIN
语法在20世纪90年代开始使用。大多数人认为它更容易阅读(连接条件是连接操作符的一部分)。更重要的是,explicitJOIN
s功能更强大,因为它们支持外部联接。顺便说一句,您的解决方案有效,我将在能够这样做时接受它(需要等待几分钟)。谢谢你花时间!如果你不介意关于逗号的问题,我想听到更多,除非你不介意。不必过于详细。谢谢@普罗米修斯。逗号是连接表的一种古老语法。正确的JOIN
语法在20世纪90年代开始使用。大多数人认为它更容易阅读(连接条件是连接操作符的一部分)。更重要的是,显式JOIN
s更强大,因为它们支持外部联接。