Составление запроса с агрегатными функциями - MySQL

Узнай цену своей работы

Формулировка задачи:

Добрый день! Помогите пожалуйста правильно составить запрос: Таблица operations имеет такую структуру(для нее есть еще доп. таблица со свойствами - ее приводит не буду): opr_id | opr_type | opr_document | opr_quantity | opr_item 1________2___________1_____________10________2 2________2___________1_____________3_________5 3________2___________2_____________4________16 4________1___________4_____________1________18
SELECT
 
 COALESCE( SUM(CASE WHEN opr_type=2 THEN oap_cost*opr_quantity ELSE 0 END), 0.0) sls_total_cost
 
FROM  operations 
  JOIN operations_additional_prop  ON  opr_id = oap_operation
Что делает данный запрос - понятно. И есть такой запрос. Он сначала группирует по типу и документу
SELECT
 
 COALESCE( SUM(CASE WHEN opr_type=2 THEN (ТУТ БУДЕТ ПОДЗАПРОС НА ОСНОВАНИИ ID ДОКУМЕНТА) ELSE 0 END), 0.0) sls_total_payment
 
FROM  operations 
  JOIN operations_additional_prop  ON  opr_id = oap_operation
GROUP BY opr_type, opr_document
Так вот хотелось бы объединить два этих запроса в один. Т.е. расчитывать sls_total_cost и sls_total_payment в одном запросе. Но проблема в том, что для расчета sls_total_cost группировка не нужна, а для sls_total_payment обязательна. Буду благодарен за помощь

Решение задачи: «Составление запроса с агрегатными функциями»

textual
Листинг программы
SELECT COALESCE(SUM(ТУТ БУДЕТ ПОДЗАПРОС НА ОСНОВАНИИ ID ДОКУМЕНТА), 0.0) sls_total_payment,
(SELECT COALESCE( SUM(oap_cost*opr_quantity), 0.0) FROM operations 
 JOIN operations_additional_prop  ON  opr_id = oap_operation
WHERE opr_type=2) sls_total_cost
FROM  operations 
JOIN operations_additional_prop  ON  opr_id = oap_operation
WHERE opr_type = 2
GROUP BY opr_document

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.556 из 5