SQL Count тогда Сумма? - PullRequest
       20

SQL Count тогда Сумма?

1 голос
/ 29 октября 2019
Select Bill.BillId, Count(Menu.MenuId) * Sum(ShoppingCart.Number) As 'Sum'
From ShoppingCart
Left Join Bill On Bill.BillId = ShoppingCart.Bill
Right Join Menu On Menu.MenuId = ShoppingCart.Menu
Group By Bill.BillId, Menu.MenuId, ShoppingCart.Number

Результат:

Billid:    Sum:
1          1
1          1
2          2
2          1
3          3
3          5

Эй, ребята, я пытаюсь подсчитать, сколько блюд было заказано, но проблема в том, что разные блюда не суммируются вместе.

Для объяснения: в BillId вы можете заказать разные блюда, в MenuId вы можете найти блюдо, а в номере вы можете найти количество заказов блюда.

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 29 октября 2019

Это то, что вы хотите?

select sc.BillId, m.DishId, count(*) as dishes
from ShoppingCart sc join
     Menu m
     on m.MenuId = sc.Menu
group by sc.BillId, m.DishId;

Вам не нужны внешние объединения, если ваша модель данных настроена правильно.

0 голосов
/ 29 октября 2019

Используйте только столбцы, которые не агрегированы в выражении group by, поэтому выражение group by должно содержать только BillID. Если вы включите MenuId и ShoppingCart.Number, то отдельные значения в этих столбцах также получат группу вместо получения агрегированного значения.

Select Bill.BillId, Count(Menu.MenuId) * Sum(ShoppingCart.Number) As 'Sum'
From ShoppingCart
Left Join Bill On Bill.BillId = ShoppingCart.Bill
Right Join Menu On Menu.MenuId = ShoppingCart.Menu
Group By Bill.BillId
...