我有一个表,其中包含以下列:date
,col1
,condition
。我想计算根据col1
和date
进行细分的condition
的统计摘要。为此,我编写了以下查询
SELECT date
,col1
,condition
,COUNT(*)
,SUM(col1)
,MAX(col1)
,MIN(col1)
,AVG(col1)
,STDDEV(col1)
,PERCENTILE_CONT(0.75) WITHIN GROUP (ORDER BY col1) OVER (PARTITION BY date, condition) AS "Q3"
,PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY col1) OVER (PARTITION BY date, condition) AS "Median"
,PERCENTILE_CONT(0.25) WITHIN GROUP (ORDER BY col1) OVER (PARTITION BY date, condition) AS "Q1"
FROM table
GROUP BY date, condition
当我在Amazon redshift上运行此代码时,出现错误。有人知道为什么吗?
答案 0 :(得分:0)
也许您想要这样的东西?
select date, condition, avg(col1), min(col1), max(col1)
from t
group by date, condition;
答案 1 :(得分:0)
我发现了这个问题:它是PARTITION BY
语句和GROUP BY
语句的结合使用。我用以下方法解决了
SELECT date
,col1
,condition
,COUNT(*) OVER (PARTITION BY date, condition)
,SUM(col1) OVER (PARTITION BY date, condition)
,MAX(col1) OVER (PARTITION BY date, condition)
,MIN(col1) OVER (PARTITION BY date, condition)
,AVG(col1) OVER (PARTITION BY date, condition)
,STDDEV(col1) OVER (PARTITION BY date, condition)
,PERCENTILE_CONT(0.75) WITHIN GROUP (ORDER BY col1) OVER (PARTITION BY date, condition) AS "Q3"
,PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY col1) OVER (PARTITION BY date, condition) AS "Median"
,PERCENTILE_CONT(0.25) WITHIN GROUP (ORDER BY col1) OVER (PARTITION BY date, condition) AS "Q1"
FROM table