Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql:从临时表中获取最大值?_Sql_Postgresql_Common Table Expression - Fatal编程技术网

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年代开始使用。大多数人认为它更容易阅读(连接条件是连接操作符的一部分)。更重要的是,explicit
JOIN
s功能更强大,因为它们支持外部联接。顺便说一句,您的解决方案有效,我将在能够这样做时接受它(需要等待几分钟)。谢谢你花时间!如果你不介意关于逗号的问题,我想听到更多,除非你不介意。不必过于详细。谢谢@普罗米修斯。逗号是连接表的一种古老语法。正确的
JOIN
语法在20世纪90年代开始使用。大多数人认为它更容易阅读(连接条件是连接操作符的一部分)。更重要的是,显式
JOIN
s更强大,因为它们支持外部联接。