powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Подсчет COUNT по нескольким критериям
22 сообщений из 22, страница 1 из 1
Подсчет COUNT по нескольким критериям
    #38981001
Fanat MB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.

Есть запрос

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
select DRIVERS.NUM, CREWS.CODE as "Позывной", DRIVERS.NAME as "ФИО", count(*) as "Всего"
from CREWS, DRIVERS, ORDERS, ORDER_TARIFS
where ORDERS.STATE like '4' and
      ORDERS.INPUTTIME >= '01.02.2015 07:00' and
      ORDERS.INPUTTIME < '02.02.2015 07:00' and
      CREWS.ID = ORDERS.CREWID and
      ORDERS.DRIVERID = DRIVERS.ID and
      ORDER_TARIFS.ID = ORDERS.TARIF_ID or
      ORDERS.STATE like '36' and
      ORDERS.INPUTTIME >= '01.02.2015 07:00' and
      ORDERS.INPUTTIME < '02.02.2015 07:00' and
      CREWS.ID = ORDERS.CREWID and
      ORDERS.DRIVERID = DRIVERS.ID and
      ORDER_TARIFS.ID = ORDERS.TARIF_ID
group by DRIVERS.NUM, CREWS.CODE, DRIVERS.NAME



Тут я получаю общее количество по записи DRIVERS.NUM, CREWS.CODE as "Позывной", DRIVERS.NAME as "ФИО"
Сколько одинаковых значений, такое значение получаем в записи "Всего".
Есть еще одно поле ORDERS.TARIF_ID с разными значениями, например (10, 15, 20)
Необходимо вывести дополнительные колонки, которые бы отображали разделение по принципу:
Код: plaintext
1.
2.
3.
  NUM   Позывной    ФИО    Всего   ТИП10     ТИП15     ТИП20
  001      005      Оля     10       5         3         2
  001      006      Аня     15       5         5         5

Что-то не знаю куда копать. Подскажите как лучше сделать
...
Рейтинг: 0 / 0
Подсчет COUNT по нескольким критериям
    #38981012
Гхостик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Современный способ называется pivot.

Старый делается через case:
sum(case when ORDERS.TARIF_ID = 10 then 1 end) "тип10",
sum(case when ORDERS.TARIF_ID = 15 then 1 end) "тип15",
sum(case when ORDERS.TARIF_ID = 20 then 1 end) "тип20"
...
Рейтинг: 0 / 0
Подсчет COUNT по нескольким критериям
    #38981223
Fanat MB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гхостик, спасибо. Помогло.
...
Рейтинг: 0 / 0
Подсчет COUNT по нескольким критериям
    #38981900
Fanat MB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А как можно в последней строке получить сумму всех значений?
...
Рейтинг: 0 / 0
Подсчет COUNT по нескольким критериям
    #38981909
Fanat MB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А также номерация строк в выводимом запросе
...
Рейтинг: 0 / 0
Подсчет COUNT по нескольким критериям
    #38982661
Melkomyagkii_newbi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fanat MBА как можно в последней строке получить сумму всех значений?

union того же запроса, но без груп бая. Нумерация от субд зависит, в оракле rownum.
...
Рейтинг: 0 / 0
Подсчет COUNT по нескольким критериям
    #38983977
Fanat MB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Melkomyagkii_newbi, субд FIREBIRD
...
Рейтинг: 0 / 0
Подсчет COUNT по нескольким критериям
    #38983981
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fanat MBА как можно в последней строке получить сумму всех значений?
Это делается средствами построителя отчётов, называется Footer.

Нумерация строк - тоже.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Подсчет COUNT по нескольким критериям
    #38984086
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fanat MBА также номерация строк в выводимом запросе

Мужчина, это тебе не эксель...
...
Рейтинг: 0 / 0
Подсчет COUNT по нескольким критериям
    #38984577
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fanat MB,
через SEQUENCE, например
...
Рейтинг: 0 / 0
Подсчет COUNT по нескольким критериям
    #38984666
Melkomyagkii_newbi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fanat MBMelkomyagkii_newbi, субд FIREBIRD

Спроси в профильном профиле , а то тебе щас тут насоветуют. Уже и сиквенс и какие-то построители отчетов. В оракле эта задача элементарно запросом решается.
...
Рейтинг: 0 / 0
Подсчет COUNT по нескольким критериям
    #38984788
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Melkomyagkii_newbiСпроси в профильном профиле
Думаешь, там я дам другой ответ?.. В любом случае и нумерация и футер это работа
построителя отчётов или другой морды. Грузить ею сервер будут только изверги.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Подсчет COUNT по нескольким критериям
    #38984872
Melkomyagkii_newbi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovMelkomyagkii_newbiСпроси в профильном профиле
Думаешь, там я дам другой ответ?.. В любом случае и нумерация и футер это работа
построителя отчётов или другой морды. Грузить ею сервер будут только изверги.


Нумерация - очень дешевая операция, футер зависит от объема, но если все необходимое для выборки влазит в память, то тоже не дорого даже в варианте который я навскидку предложил(юнион того же запроса без полей из груп бая и собственно груп бая), возможно можно как-то и оптимальней сделать. Ну зависит от интенсивности использования и типа сервера - скорее всего ничего серверу не будет, переносить на морду - экономия на спичках. А морду грузить не жалко?
...
Рейтинг: 0 / 0
Подсчет COUNT по нескольким критериям
    #38984910
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос скорее для "Разработки информационных систем", а не этого форума

Вынесение нумерации и футера в морду плохо тем что логика начинает размазываться по двум местам. Завтра появится требование "а давайте суммировать не все, а по некоему критерию" - надо будет лезть и править именно отчет, а не запрос.
Если на "поддерживаемость" приниципально забить и смотреть только с точки зрения производительности - да, на клиенте это делать дешевле.
...
Рейтинг: 0 / 0
Подсчет COUNT по нескольким критериям
    #38984958
miwaonline
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот МатроскинВопрос скорее для "Разработки информационных систем", а не этого форума

Вынесение нумерации и футера в морду плохо тем что логика начинает размазываться по двум местам. Завтра появится требование "а давайте суммировать не все, а по некоему критерию" - надо будет лезть и править именно отчет, а не запрос.

А уже сегодня пользователь запроса пересортирует его по какому-то критерию и итог "уползет" куда-то в середину набора данных. Так что если забивать на поддерживаемость, то - да, на сервере делать быстрее.
...
Рейтинг: 0 / 0
Подсчет COUNT по нескольким критериям
    #38985034
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miwaonlineКот МатроскинВопрос скорее для "Разработки информационных систем", а не этого форума

Вынесение нумерации и футера в морду плохо тем что логика начинает размазываться по двум местам. Завтра появится требование "а давайте суммировать не все, а по некоему критерию" - надо будет лезть и править именно отчет, а не запрос.

А уже сегодня пользователь запроса пересортирует его по какому-то критерию и итог "уползет" куда-то в середину набора данных. Так что если забивать на поддерживаемость, то - да, на сервере делать быстрее.
Ну во-первых - нет, не уползет.
Во-вторых - даже если бы уползал, это означало бы проблемы не с поддерживаемостью,а собственно с соответствием текущей реализации постановке.
...
Рейтинг: 0 / 0
Подсчет COUNT по нескольким критериям
    #38985038
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Melkomyagkii_newbiтоже не дорого даже в варианте который я навскидку
предложил(юнион того же запроса без полей из груп бая и собственно груп бая), возможно
можно как-то и оптимальней сделать
Ага: выкинуть union и получать данные для футера отдельным запросом. Но это всё равно
будет двойной проход по данным, который ничем кроме лени разработчика не объяснить.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Подсчет COUNT по нескольким критериям
    #38985060
miwaonline
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот Матроскинmiwaonlineпропущено...

А уже сегодня пользователь запроса пересортирует его по какому-то критерию и итог "уползет" куда-то в середину набора данных. Так что если забивать на поддерживаемость, то - да, на сервере делать быстрее.
Ну во-первых - нет, не уползет.

Получил пользователь из базы вот такой набор данных
ФамилияСуммаИванов100Петров200Итого300
в каком-то гриде, или - что довольно часто случается с отчетами - в екселе.

Не знаю, как ваш ексель, а мой после сортировки по фамилии засовывает "Итого" всередину списка.
Кот МатроскинВо-вторых - даже если бы уползал, это означало бы проблемы не с поддерживаемостью,а собственно с соответствием текущей реализации постановке.

Да-да, не автор запроса альтернативно мыслит, а "соответствие такущей реализации постановке" в табличном редакторе неправильное.
...
Рейтинг: 0 / 0
Подсчет COUNT по нескольким критериям
    #38985083
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miwaonlineКот Матроскинпропущено...

Ну во-первых - нет, не уползет.

Получил пользователь из базы вот такой набор данных
ФамилияСуммаИванов100Петров200Итого300


А кто сказал, что он получил такой набор данных? Реализация суммирования на сервере совершенно не обязывает получать именно такой набор данных - это вполне могут быть 2 отдельных набора данных.
miwaonlineКот МатроскинВо-вторых - даже если бы уползал, это означало бы проблемы не с поддерживаемостью,а собственно с соответствием текущей реализации постановке.

Да-да, не автор запроса альтернативно мыслит, а "соответствие такущей реализации постановке" в табличном редакторе неправильное.
Это уже, похоже, разговор с голосами в своей голове.
...
Рейтинг: 0 / 0
Подсчет COUNT по нескольким критериям
    #38985140
miwaonline
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот Матроскин,

Да, действительно, что-то я дверью ошибся, прошу извинить.

Не подскажете, кстати, где это один запрос - два отдельных набора данных? Чтобы и я туда случайно не зашел людей смущать.
...
Рейтинг: 0 / 0
Подсчет COUNT по нескольким критериям
    #38985407
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miwaonline
Не подскажете, кстати, где это один запрос - два отдельных набора данных?
Конечно подскажу - там же, в Вашей голове.
ТС спросил
как можно в последней строке получить сумму всех значений, никакого условия "в рамках того же запроса", как видим, нет, вопрос касается итогового отображения
в отчетной системе (а если бы было не так, то разговоры про footer были бы изначально бессмысленными)
...
Рейтинг: 0 / 0
Подсчет COUNT по нескольким критериям
    #38985453
miwaonline
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот МатроскинА кто сказал, что он получил такой набор данных? Реализация суммирования на сервере совершенно не обязывает получать именно такой набор данных - это вполне могут быть 2 отдельных набора данных.

miwaonlineНе подскажете, кстати, где это один запрос - два отдельных набора данных

Кот МатроскинКонечно подскажу - там же, в Вашей голове.

Да, действительно, дверь определенно не та. Странно, конечно: пишет, что "Проектирование БД", а внутрях неонка специалист по голосам в голове, ведущий сам с собой беседу.

Еще раз извините.
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Подсчет COUNT по нескольким критериям
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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