Расчет сводной статистики в SQL - PullRequest
0 голосов
/ 07 апреля 2020

У меня есть таблица со столбцами: 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, я получаю сообщение об ошибке. Кто-то знает почему?

Ответы [ 2 ]

0 голосов
/ 07 апреля 2020

Я нашел проблему в этом: это было использование оператора 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
0 голосов
/ 07 апреля 2020

Возможно, вы хотите что-то подобное?

select date, condition, avg(col1), min(col1), max(col1)
from t
group by date, condition;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...