SQLRU.net
Разработка приложений баз данных

Начало » Использование СУБД » Firebird, HQbird, InterBase » Помогите с выборкой (select sum)
Помогите с выборкой [сообщение #2962] Wed, 09 August 2023 16:36 Переход к следующему сообщению
sashaua01 в настоящее время не в онлайне  sashaua01
Сообщений: 26
Зарегистрирован: July 2022
Junior Member
Подскажите пожлуйста можно ли в одом запросе сделать такую штуку.

Есть таблицы
OPERATIONS
ID|ID_OPERATION|ID_CURRENCY|
1 |     5      |    1      |
2 |     7      |    1      |
3 |     5      |    2      |
4 |     7      |    2      |
OPERATION_MODELS
ID|ID_OPER|COUNT|PRICE|
1 |   1   |  1  | 10  |
2 |   2   |  1  | 10  |
3 |   3   |  1  | 10  |
4 |   4   |  1  | 10  |
В таблице OPERATION_MODELS поле ID_OPER ссылаться на OPERATIONS поле ID

Просуммировать COUNT*PRICE с групировкой по ID_CURRENCY для ID_OPERATION=5 и отнять COUNT*PRICE для ID_OPERATION=7 с групировкой по ID_CURRENCY
Типа такого
select sum (OPERATION_MODELS.COUNT*OPERATION_MODELS.PRICE) where OPERATIONS.ID_OPERATION=5  group by OPERATIONS.ID_CURRENCY минус select sum (OPERATION_MODELS.COUNT*OPERATION_MODELS.PRICE) where OPERATIONS.ID_OPERATION=7  group by OPERATIONS.ID_CURRENCY
Re: Помогите с выборкой [сообщение #2963 является ответом на сообщение #2962] Wed, 09 August 2023 16:48 Переход к предыдущему сообщениюПереход к следующему сообщению
МП в настоящее время не в онлайне  МП
Сообщений: 887
Зарегистрирован: August 2022
Географическое положение: бурятский тун...
Senior Member
SELECT
SUM(CASE WHEN OPERATIONS.ID_OPERATION=5 THEN OPERATION_MODELS.COUNT*OPERATION_MODELS.PRICE END)
-
SUM(CASE WHEN OPERATIONS.ID_OPERATION=7 THEN OPERATION_MODELS.COUNT*OPERATION_MODELS.PRICE END)
FROM ...
group by OPERATIONS.ID_CURRENCY
Re: Помогите с выборкой [сообщение #2975 является ответом на сообщение #2963] Thu, 10 August 2023 17:23 Переход к предыдущему сообщениюПереход к следующему сообщению
sashaua01 в настоящее время не в онлайне  sashaua01
Сообщений: 26
Зарегистрирован: July 2022
Junior Member
Спасибо
Re: Помогите с выборкой [сообщение #2976 является ответом на сообщение #2975] Thu, 10 August 2023 17:29 Переход к предыдущему сообщениюПереход к следующему сообщению
МП в настоящее время не в онлайне  МП
Сообщений: 887
Зарегистрирован: August 2022
Географическое положение: бурятский тун...
Senior Member
от вы так говорите, как будто это что-то плохое. ©
Re: Помогите с выборкой [сообщение #2977 является ответом на сообщение #2962] Fri, 11 August 2023 10:40 Переход к предыдущему сообщениюПереход к следующему сообщению
sim_84 в настоящее время не в онлайне  sim_84
Сообщений: 330
Зарегистрирован: June 2022
Senior Member
Называть поле в таблице COUNT очень плохая идея, ибо это ключевое слово (агрегатная функция).

Если используется 4.0, то CASE можно заменить выражением FILTER

SELECT
SUM(OPERATION_MODELS.COUNT*OPERATION_MODELS.PRICE) FILTER(WHERE OPERATIONS.ID_OPERATION=5)
-
SUM(OPERATION_MODELS.COUNT*OPERATION_MODELS.PRICE) FILTER(WHERE OPERATIONS.ID_OPERATION=7)
FROM ...
group by OPERATIONS.ID_CURRENCY
Re: Помогите с выборкой [сообщение #2978 является ответом на сообщение #2977] Fri, 11 August 2023 16:33 Переход к предыдущему сообщениюПереход к следующему сообщению
shavluk в настоящее время не в онлайне  shavluk
Сообщений: 82
Зарегистрирован: June 2022
Географическое положение: Одеса
Member
sim_84 писал(а) Fri, 11 August 2023 10:40
Если используется 4.0, то CASE можно заменить выражением FILTER
Ух ты! А я все по старинке пускаю поезда под откос использую IIF/CASE

[Обновления: Fri, 11 August 2023 16:33]

Известить модератора

Re: Помогите с выборкой [сообщение #2981 является ответом на сообщение #2978] Fri, 11 August 2023 17:29 Переход к предыдущему сообщениюПереход к следующему сообщению
sim_84 в настоящее время не в онлайне  sim_84
Сообщений: 330
Зарегистрирован: June 2022
Senior Member
Одно другому не мешает. Просто иногда запись с FILTER(WHERE ...) кажется более компактной.
Re: Помогите с выборкой [сообщение #2982 является ответом на сообщение #2981] Fri, 11 August 2023 17:35 Переход к предыдущему сообщению
МП в настоящее время не в онлайне  МП
Сообщений: 887
Зарегистрирован: August 2022
Географическое положение: бурятский тун...
Senior Member
да и красивше, имхо.
Предыдущая тема: Запрос на выборку строки с самой свежей датой
Следующая тема: Вышли минорные релизы Firebird 3.0.11 и 4.0.3
Переход к форуму:
  


Текущее время: Thu Nov 21 20:19:09 GMT+3 2024

Общее время, затраченное на создание страницы: 0.00906 секунд