Sascha Manns Ответов: 2

Вычислить сумму записей в T-SQL


В настоящее время я начинаю новый проект для службы доставки.

У меня в этой таблице приведен:

CustID MealID Week  Weekday
1	   3	  1	Monday
1	   5	  1	Tuesday
1	   6	  1	Wednesday
1	   6	  1	Thursday
1	   3	  1	Friday
1	   5	  1	Saturday
1	   1	  2	Monday
1	   9	  2	Tuesday
1	  11	  2	Wednesday
1	  12	  2	Thursday
1	  12	  2	Friday
1	   1	  2	Saturday
2	   3	  1	Monday
2	   5	  1	Tuesday
2	   6	  1	Wednesday
2	   6	  1	Thursday
2	   3	  1	Friday
2	   5	  1	Saturday


На первом этапе мне нужно все питание с 1-й недели. Так что предложение where работает идеально.
Теперь у меня есть второй шаг. Мне нужно, чтобы подсчет каждого приема пищи суммировался.

Скажем, еда 6 х 4, еда 3 х 4 и так далее.

Существует ли хороший способ суммировать это?

Что я уже пробовал:

Я опробовал пункт о подсчете, но то, что я видел, не работает в этом случае.

Patrice T

И вы планируете показать запрос, который вы использовали ?

2 Ответов

Рейтинг:
17

OriginalGriff

Нужно смотреть на группу: SQL GROUP BY оператор[^]
Попробуй:

SELECT MealID, COUNT(MealID) FROM MyTable
WHERE Week = 1
GROUP BY MealID


Sascha Manns

Спасибо всем, кто пытался помочь. Я попробую это решение. Спасибо всем.

Рейтинг:
1

CHill60

Вместо того чтобы использовать предложение WHERE разделите ваши данные Предложение OVER (Transact-SQL) - SQL Server | Microsoft Docs[^] и получить всю необходимую информацию в одном запросе.

Вот пример из ссылки

USE AdventureWorks2012;  
GO  
SELECT SalesOrderID, ProductID, OrderQty  
    ,SUM(OrderQty) OVER(PARTITION BY SalesOrderID) AS Total  
    ,AVG(OrderQty) OVER(PARTITION BY SalesOrderID) AS "Avg"  
    ,COUNT(OrderQty) OVER(PARTITION BY SalesOrderID) AS "Count"  
    ,MIN(OrderQty) OVER(PARTITION BY SalesOrderID) AS "Min"  
    ,MAX(OrderQty) OVER(PARTITION BY SalesOrderID) AS "Max"  
FROM Sales.SalesOrderDetail   
WHERE SalesOrderID IN(43659,43664);  
GO