Как мне суммировать записи по неделям, используя pl / sql? - PullRequest
2 голосов
/ 26 января 2011

У меня есть запрос в Oracle для отчета, который выглядит следующим образом:

SELECT TRUNC (created_dt) created_dt
    ,  COUNT ( * ) AllClaims
    ,  SUM(CASE WHEN filmth_cd in ('T', 'C') THEN 1 ELSE 0 END ) CT
    ,  SUM(CASE WHEN filmth_cd = 'W' THEN 1 ELSE 0 END ) Web 
    ,  SUM(CASE WHEN filmth_cd = 'I' THEN 1 ELSE 0 END ) Icon 
FROM claims c
WHERE c.clsts_cd NOT IN ('IN', 'WD')
   AND  TRUNC (created_dt) between 
    to_date('1/1/2006', 'dd/mm/yyyy') AND 
    to_date('1/1/2100', 'dd/mm/yyyy')
GROUP BY TRUNC (created_dt)
ORDER BY TRUNC (created_dt) DESC;

Возвращает такие данные:

Create_Dt  AllClaims   CT    Web    Icon
1/26/2011  675         356   285    34
1/25/2011  740         322   379    39
...

Мне нужен набор результатов, который суммирует все дневные значения в недельное значение. Я довольно новичок в PL / SQL и не знаю, с чего начать.

Ответы [ 2 ]

4 голосов
/ 26 января 2011

Что-то вроде

SELECT TRUNC (created_dt, 'IW') created_dt
    ,  COUNT ( * ) AllClaims
    ,  SUM(CASE WHEN filmth_cd in ('T', 'C') THEN 1 ELSE 0 END ) CT
    ,  SUM(CASE WHEN filmth_cd = 'W' THEN 1 ELSE 0 END ) Web 
    ,  SUM(CASE WHEN filmth_cd = 'I' THEN 1 ELSE 0 END ) Icon 
FROM claims c
WHERE c.clsts_cd NOT IN ('IN', 'WD')
   AND  TRUNC (created_dt) between 
    to_date('1/1/2006', 'dd/mm/yyyy') AND 
    to_date('1/1/2100', 'dd/mm/yyyy')
GROUP BY TRUNC (created_dt, 'IW')
ORDER BY TRUNC (created_dt, 'IW') DESC;

агрегирует данные на основе первого дня недели ISO.

1 голос
/ 30 августа 2012

Вот простой пример, который я часто использую:

SELECT
 TO_CHAR(created_dt,'WW'),
 max(created_dt),
 COUNT(*)
from MY_TABLE
group by
  TO_CHAR(created_dt,'WW');

to_char (созданный_дет, 'WW') создает группы, и максимум (созданный_дт) отображает последний день недели Используйте min (create_dt), если вы хотите отобразить первый день недели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...