выберите суммировать разные столбцы, сгруппированные по другому столбцу

#sql #oracle #group-by

#sql #Oracle #группировать по

Вопрос:

Я пытался рассчитать общую цену за «BESTELLING_ID». Но я не знаю, с чего начать. Группировка по bestelling_id, похоже, не работает. Здесь вы можете увидеть результат запроса, в котором я хочу суммировать значение вычисления для «BESTELLING_ID». Я пытался рассмотреть другие вопросы, но, похоже, я не могу связать ответы на свой вопрос. Я хочу использовать это для диаграммы, которая показывает стоимость личного заказа на заказы. Заранее спасибо.

 BESTELLING_ID   NAAM    ((P.PRIJS)*(R5.GEWICHT/100))
1              ui                    .25
1              pindakaas              1.7
22             Broccoli               1
22             Rijst                  1
 
 select   b.bestelling_id ,p.naam, ((p.prijs)* (r5.gewicht/100)) 
   from  relation_6 r6
     join bestellingregel br on br.dieet_dieet_id= r6.dieet_id
     join bestelling b on br.bestelling_id=b.bestelling_id
     join relation_5 r5 on r5.recept_recept_id= r6.recept_id
     join product p on p.product_id = r5.product_product_id
   where p.winkelbeheer_winkelbeheer_id=2
   order by b.datum
;
 

Ответ №1:

Используйте это:

  select   
      a.col1 as BESTELLING_ID,sum(a.col3) as Total_Price
 from (      
  SELECT b.bestelling_id col1, p.naam  col2, ( (p.prijs) * (r5.gewicht / 100))  col3
    FROM relation_6 r6
         JOIN bestellingregel br ON br.dieet_dieet_id = r6.dieet_id
         JOIN bestelling b ON br.bestelling_id = b.bestelling_id
         JOIN relation_5 r5 ON r5.recept_recept_id = r6.recept_id
         JOIN product p ON p.product_id = r5.product_product_id
   WHERE p.winkelbeheer_winkelbeheer_id = 2
ORDER BY b.datum ) a
group by a.col1;
 

Комментарии:

1. Большое спасибо! Мне придется попробовать это с помощью более простого запроса, чтобы увидеть, как это работает на самом деле. Но пока это мне очень поможет!

Ответ №2:

Вам не нужен подзапрос, просто group by :

 select b.bestelling_id, sum((p.prijs)* (r5.gewicht/100)) 
from relation_6 r6 join
     bestellingregel br
     on br.dieet_dieet_id = r6.dieet_id join
     bestelling b
     on br.bestelling_id = b.bestelling_id join
     relation_5 r5
     on r5.recept_recept_id = r6.recept_id join
     product p
     on p.product_id = r5.product_product_id
where p.winkelbeheer_winkelbeheer_id = 2
group by b.bestelling_id;
 

Возможно, вы сможете включить p.naam в select и group by , предполагая, что существует только одно имя на bestselling_id .