有没有一个sql功能可以返回每列的最大值?

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

背景:我有一个独特的设置,包含多个表,每个表大约有 1,600 列,我正在尝试清理这些表(这会为上游带来好处)。我知道这些列中大约 80% 始终为 [NULL],但我需要准确地知道哪些列(数百万行)。

我可以做以下1,600次,但看起来效率很低:

select max(column1) as 'column1'
,max(column2) as 'column2'
from mytable;

如果有区别的话,那就是 Redshift(但我无权访问 AWS)。

到目前为止,我已经尝试了上述方法作为概念证明,但它的扩展性不佳。因此,我唯一的其他选择是使用横向粘贴将标题复制并粘贴到 Excel 中,然后根据数字编写一个连接。

我感谢您提供的任何帮助 - 我会接受我的命运:-)

sql amazon-redshift
1个回答
0
投票

如果您想生成像您这样的查询:

SELECT MAX(column1) AS column1, MAX(column2) AS column2, ... FROM mytable;

试试这个:

SELECT 'SELECT ' ||
LISTAGG('MAX(' || column_name || ') AS ' || column_name, ', ') 
WITHIN GROUP (ORDER BY ordinal_position) ||
' FROM your_schema.mytable;' AS generated_query
FROM information_schema.columns
WHERE table_schema = 'your_schema'
AND table_name = 'mytable';
© www.soinside.com 2019 - 2024. All rights reserved.