Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / переменное количество данных одним запросом / 11 сообщений из 11, страница 1 из 1
15.01.2019, 13:59
    #39759752
Квази
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
переменное количество данных одним запросом
Можно ли вернуть select count(*) по дням, начиная с понедельника по текущий.
...
Рейтинг: 0 / 0
15.01.2019, 14:02
    #39759753
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
переменное количество данных одним запросом
разрешаю
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
15.01.2019, 14:37
    #39759791
KreatorXXI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
переменное количество данных одним запросом
Квази,

можно. В помощь group by, extract, weekday. К сожалению, примера нет. Нужны Ваши данные для примера. Придумывать на своих не хочется.
...
Рейтинг: 0 / 0
15.01.2019, 14:43
    #39759798
Квази
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
переменное количество данных одним запросом
KreatorXXI,

пример простой
данные за определенную дату извлекаются запросом типа
Код: sql
1.
select count(*) from *** where DateField='дата'


если сегодня среда, то будет что то типа

Код: sql
1.
2.
3.
select count(*), 
(count(*) from *** where DateField='вторник')
from *** where DateField='понедельник'
...
Рейтинг: 0 / 0
15.01.2019, 15:03
    #39759810
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
переменное количество данных одним запросом
Квази,

запрос бессмысленный, работать не будет, т.к. внутренний запрос вернет только один столбец - count, да и where у обоих запросов взаимоисключаемые.

см. extract и group by. только
select extract(day from DateField), count(*)
from table
group by 1

вернет количество для всех понедельников. Может так и надо, х.з.
...
Рейтинг: 0 / 0
15.01.2019, 15:25
    #39759831
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
переменное количество данных одним запросом
Квази,

что-то типа такого

Код: sql
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.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
WITH T
AS (SELECT
        SERVICE.CODE_SERVICE,
        CASE
          WHEN EXTRACT(WEEKDAY FROM CURRENT_TIMESTAMP) = 0
          THEN 7
          ELSE EXTRACT(WEEKDAY FROM CURRENT_TIMESTAMP)
        END AS CURR_D_NUMBER,
        CASE
          WHEN EXTRACT(WEEKDAY FROM SERVICE.BYDATE) = 0
          THEN 7
          ELSE EXTRACT(WEEKDAY FROM SERVICE.BYDATE)
        END AS D_NUMBER
    FROM
        SERVICE
    WHERE SERVICE.BYDATE BETWEEN DATEADD(-1 WEEK TO CURRENT_TIMESTAMP) AND CURRENT_TIMESTAMP)
SELECT
    COUNT(T.CODE_SERVICE) AS CNT,
    COUNT(
    CASE
      WHEN (CURR_D_NUMBER >= D_NUMBER) AND D_NUMBER = 1
      THEN T.CODE_SERVICE
    END) AS CNT_MON,
    COUNT(
    CASE
      WHEN (CURR_D_NUMBER >= D_NUMBER) AND D_NUMBER = 2
      THEN T.CODE_SERVICE
    END) AS CNT_TUE,
    COUNT(
    CASE
      WHEN (CURR_D_NUMBER >= D_NUMBER) AND D_NUMBER = 3
      THEN T.CODE_SERVICE
    END) AS CNT_WEN,
    COUNT(
    CASE
      WHEN (CURR_D_NUMBER >= D_NUMBER) AND D_NUMBER = 4
      THEN T.CODE_SERVICE
    END) AS CNT_THU,
    COUNT(
    CASE
      WHEN (CURR_D_NUMBER >= D_NUMBER) AND D_NUMBER = 5
      THEN T.CODE_SERVICE
    END) AS CNT_FRI,
    COUNT(
    CASE
      WHEN (CURR_D_NUMBER >= D_NUMBER) AND D_NUMBER = 6
      THEN T.CODE_SERVICE
    END) AS CNT_SAT,
    COUNT(
    CASE
      WHEN (CURR_D_NUMBER >= D_NUMBER) AND D_NUMBER = 7
      THEN T.CODE_SERVICE
    END) AS CNT_SUN
FROM
    T 
...
Рейтинг: 0 / 0
15.01.2019, 15:41
    #39759839
KreatorXXI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
переменное количество данных одним запросом
Квази,

Код: sql
1.
2.
3.
4.
select WeekDay(a.DateField), count(*)
from Table a
where a.DateField between DateAdd((1-extract(WeekDay from Currentdate)) to CurrentDate) and CurrentDate
group by 1



Воскресенье надо отдельно обработать. Проклятые американцы, начинают неделю с воскресенья.
...
Рейтинг: 0 / 0
15.01.2019, 16:20
    #39759877
WildSery
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
переменное количество данных одним запросом
Производственный Календарь.
...
Рейтинг: 0 / 0
16.01.2019, 11:42
    #39760192
Квази
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
переменное количество данных одним запросом
KreatorXXIКвази,

Код: sql
1.
2.
3.
4.
select WeekDay(a.DateField), count(*)
from Table a
where a.DateField between DateAdd((1-extract(WeekDay from Currentdate)) to CurrentDate) and CurrentDate
group by 1



Воскресенье надо отдельно обработать. Проклятые американцы, начинают неделю с воскресенья.
Спасибо, то, что нужно. В воскресенье работать грех, поэтому обрабатывать его не будем.
...
Рейтинг: 0 / 0
16.01.2019, 11:43
    #39760193
Квази
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
переменное количество данных одним запросом
kdvКвази,

запрос бессмысленный, работать не будет, т.к. внутренний запрос вернет только один столбец - count
да в принципе не страшно, главное получить данные за неделю одним запросом.
...
Рейтинг: 0 / 0
16.01.2019, 12:07
    #39760201
KreatorXXI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
переменное количество данных одним запросом
КвазиВ воскресенье работать грех, поэтому обрабатывать его не будем.

А кому-то и в субботу грех. А мне бы и в пятницу ещё погрешить.
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / переменное количество данных одним запросом / 11 сообщений из 11, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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