Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Помогите с запросом связанным с выборкой по дате / 3 сообщений из 3, страница 1 из 1
16.12.2005, 18:01
    #33441647
topchan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом связанным с выборкой по дате
Есть таблица
data id
2005-12-14 03:06:42+02 20
2005-12-14 03:06:42+02 40
2005-12-15 03:06:42+02 50
2005-12-16 03:06:42+02 40
2005-12-16 03:06:42+02 20
2005-12-16 03:06:42+02 50
2005-12-16 03:06:42+02 60
(последний ряд цифр 20, 40 ... относится к id)

Запрос должен выводить данные в таком виде

дата всего 0 < 30 30 < 50 50 < 100
2005-12-14 2 1 1 0
2005-12-15 1 0 0 1
2005-12-16 4 1 1 2
(0<30, 30<50, 50<100 это группы куда мы распределяем значения id)

то есть для каждого дня мы подсчитываем сколько всего есть значений и растасовываем их по группам
...
Рейтинг: 0 / 0
19.12.2005, 05:55
    #33443267
Владимор Конев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом связанным с выборкой по дате
topchanЕсть таблица
data id
2005-12-14 03:06:42+02 20
2005-12-14 03:06:42+02 40
2005-12-15 03:06:42+02 50
2005-12-16 03:06:42+02 40
2005-12-16 03:06:42+02 20
2005-12-16 03:06:42+02 50
2005-12-16 03:06:42+02 60
(последний ряд цифр 20, 40 ... относится к id)

Запрос должен выводить данные в таком виде

дата всего 0 < 30 30 < 50 50 < 100
2005-12-14 2 1 1 0
2005-12-15 1 0 0 1
2005-12-16 4 1 1 2
(0<30, 30<50, 50<100 это группы куда мы распределяем значения id)

то есть для каждого дня мы подсчитываем сколько всего есть значений и растасовываем их по группамВот такой вариант попробуй, должен работать. Только замени оракловую функцию усечения даты TRUNC на что-нибудь подходящее из PostgreSQL:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
select dt, 
       count( 1 )      as counter,
       sum(less_30)  as sum_less_30,
       sum(less_50)  as sum_less_50,
       sum(less_100) as sum_less_100
  from (
          select trunc(data) /*
                                 TRUNC - в Oracle это функция усечения порции времени в дате,
                                 Аналог такой функции в PostgrеSQL подбери сам, я его не знаю
                             */
                   as dt,
                 case 
                    when id <  30  then  1 
                    else  0 
                 end as less_30,
                 case
                    when id >=  30  and id <  50  then  1 
                    else  0 
                 end less_50,
                 case
                    when id >=  50  and id <  100  then  1 
                    else  0 
                 end as less_100
            from "ТВОЯ_ТАБЛИЦА"
       )
group by dt

Query finished, retrieving results...

     DT      COUNTER  SUM_LESS_30  SUM_LESS_50  SUM_LESS_100
-----------  -------  -----------  -----------  ------------
 14 -дек- 2005          2              1              1               0 
 15 -дек- 2005          1              0              0               1 
 16 -дек- 2005          4              1              1               2 

 3  row(s) retrieved
...
Рейтинг: 0 / 0
20.12.2005, 16:50
    #33447243
topchan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом связанным с выборкой по дате
Спасибо.
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Помогите с запросом связанным с выборкой по дате / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]