【发布时间】:2018-10-05 22:42:34
【问题描述】:
我有一个包含数百万行和 940 列的表。我真的希望有一种方法可以总结这些数据。我想查看每一列的每个值的频率。我将此代码用于一些列,但在处理太大之前我将无法获得更多列。
SELECT
f19_24
,f25_34
,f35_44
,f45_49
,f50_54
,f55_59
,f60_64
,count(1) AS Frequency
FROM
(SELECT a.account, ntile(3) over (order by sum(a.seconds) desc) as ntile
,f19_24
,f25_34
,f35_44
,f45_49
,f50_54
,f55_59
,f60_64
FROM demo as c
JOIN aggregates a on c.customer_account = a.account
WHERE a.month IN ('201804', '201805', '201806')
GROUP BY a.account
,f19_24
,f25_34
,f35_44
,f45_49
,f50_54
,f55_59
,f60_64
)
WHERE ntile = 1
GROUP BY
f19_24
,f25_34
,f35_44
,f45_49
,f50_54
,f55_59
,f60_64
问题是GROUP BY 太麻烦了。有没有别的办法???能够在如此大的数据集中查看高频的位置将非常有帮助。
【问题讨论】:
-
用您正在使用的数据库标记您的问题。您的问题还提到了一张表,但您的代码引用了两张。此外,您在查询中过滤了不在问题中的查询。
标签: sql