用SQL计算摘要统计

时间:2020-04-07 02:05:35

标签: sql amazon-redshift

我有一个表,其中包含以下列:datecol1condition。我想计算根据col1date进行细分的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上运行此代码时,出现错误。有人知道为什么吗?

2 个答案:

答案 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