Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.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
Sql 替代对相关子查询结果的GROUP BY列中的引用_Sql_Postgresql_Correlated Subquery_Amazon Redshift_Paraccel - Fatal编程技术网

Sql 替代对相关子查询结果的GROUP BY列中的引用

Sql 替代对相关子查询结果的GROUP BY列中的引用,sql,postgresql,correlated-subquery,amazon-redshift,paraccel,Sql,Postgresql,Correlated Subquery,Amazon Redshift,Paraccel,这个问题源于Amazon Redshift(基于Paraccel的专栏分析数据库)的局限性。不受支持的功能之一是 例如,以下语句将生成红移错误,因为GROUPBY使用子查询生成的list select listing.listid, (select count (sales.listid) from sales where sales.listid=listing.listid) as list from listing group by list, listing.listid; 下面的示

这个问题源于Amazon Redshift(基于Paraccel的专栏分析数据库)的局限性。不受支持的功能之一是

例如,以下语句将生成红移错误,因为GROUPBY使用子查询生成的
list

select listing.listid,
(select count (sales.listid) from sales where sales.listid=listing.listid) as list
from listing
group by list, listing.listid; 
下面的示例来自另一个不受支持的用例(对生成此一般问题的答案)


这个问题的目的是找到一个通用模式来克服这个特定的Amazon红移相关子查询限制。与使用相关子查询中的值获得相同结果的替代SQL模式有哪些?

除非我遗漏了什么,否则左连接应该可以做到这一点

SELECT listing.listid
      ,COUNT(sales.listid)
FROM      listing
LEFT JOIN sales
       ON sales.listid = listing.listid
GROUP BY listing.listid
ORDER BY COUNT(sales.listid) DESC
; 

对于不熟悉红移的人:假设您使用的是大约一个PostgreSQL 8.1/8.2功能集,外加一些额外的功能和额外的限制。没有CTE或窗口函数,没有
unnest
array\u agg
等(顺便说一句,如果有红移SQLFIDLE就太好了)。您确实有窗口函数:+1@Guy:确实有窗口函数。不过,它们确实有局限性。
SELECT listing.listid
      ,COUNT(sales.listid)
FROM      listing
LEFT JOIN sales
       ON sales.listid = listing.listid
GROUP BY listing.listid
ORDER BY COUNT(sales.listid) DESC
;