sql - RedShift Error when using COUNT (Distinct XXX) ERROR: XX000: This type of associated subquery patterns is not supported due to internal error
问题描述
我通过 Aginity 在 RedShift 中运行了一个小查询,但出现以下错误:
错误:XX000:由于内部错误,不支持这种类型的相关子查询模式
当前查询:
SELECT 'MYSCHEMA.MYTABLE.FIELDA' as obj_name,
COUNT(*) as rows,
COUNT(DISTINCT FIELDA) as distinct_vals,
SUM(CASE WHEN FIELDA in ('00DK','00DC','00DE','00DD','00DB') THEN 1 ELSE 0 END) as enter,
SUM(CASE WHEN TRIM(FIELDA) IN ('',null) THEN 1 ELSE 0 END) as nulls
FROM MYSCHEMA.MYTABLE
但是,如果我删除它运行的 DISTINCT:
SELECT 'MYSCHEMA.MYTABLE.FIELDA' as obj_name,
COUNT(*) as rows,
COUNT(FIELDA) as distinct_vals,
SUM(CASE WHEN FIELDA in ('00DK','00DC','00DE','00DD','00DB') THEN 1 ELSE 0 END) as enter,
SUM(CASE WHEN TRIM(FIELDA) IN ('',null) THEN 1 ELSE 0 END) as nulls
FROM MYSCHEMA.MYTABLE
解决方案
如果您在子查询中使用窗口函数,它会起作用吗?
SELECT 'MYSCHEMA.MYTABLE.FIELDA' as obj_name,
COUNT(*) as rows,
SUM( (seqnum = 1)::INT ) as distinct_vals,
SUM(CASE WHEN FIELDA in ('00DK','00DC','00DE','00DD','00DB') THEN 1 ELSE 0 END) as enter,
SUM(CASE WHEN TRIM(FIELDA) IN ('',null) THEN 1 ELSE 0 END) as nulls
FROM (SELECT t.*,
ROW_NUMBER() OVER (PARTITION BY FIELDA ORDER BY FIELDA) as seqnum
FROM MYSCHEMA.MYTABLE t
) t
推荐阅读
- python - 在特定值之后删除熊猫数据框中的行(循环时?)
- python - Python(numpy):同时为不同的平均向量生成多元随机样本?
- python - Python 构建包错误 - 'virtualenv' 没有属性 'cli_run'
- ruby-on-rails - ruby 中的间歇性 NoMemoryError
- javascript - 如何覆盖 setTimeout() 和 setInterval() 以允许动态调整
- jquery - 将ajax结果添加到jquery对话框
- azure-logic-apps - 从 Power-Automate 中的循环中过滤结果数组
- flutter - 我在颤振中创建了一个应用程序,但是每当我按下后退按钮时,它都会将我重定向回我打开的页面而不是以前的页面
- jenkins - 如何在每项工作(不仅仅是工作区)之前触发 Jenkins 从属清理?
- flutter - 有状态小部件的动态 ListView 不起作用