SQLite - получение суммы от идентичного идентификатора - PullRequest
0 голосов
/ 28 мая 2020

enter image description here

Я хочу получить промежуточный итог для каждого уникального идентификатора заказа. Например, 3 заказа, сделанные с помощью OrderID 10248, составят

168,0 долларов США + 98,0 долларов США + 174,0 долларов США = 440,0 долларов США.

Это то, что у меня есть в SQLite

SELECT OrderID, UnitPrice, Quantity, 
       Discount, '$' || ((UnitPrice * Quantity) - (Discount * (UnitPrice * Quantity))) 
    AS Subtotal
  FROM OrderDetail

Я пробовал GROUP BY OrderID, но он получает только первый промежуточный итог каждого OrderID.

Любые подсказки для получения общей суммы будут оценены.

1 Ответ

1 голос
/ 28 мая 2020

Получение промежуточных итогов для каждого OrderID можно эмулировать с помощью этого запроса:

WITH OD AS
(
 SELECT OrderID, 
        UnitPrice, Quantity, Discount,
       (UnitPrice * Quantity) * ( 1 - Discount ) AS Subtotal
   FROM OrderDetail
)
SELECT * FROM OD 
UNION ALL
SELECT OrderID, Null, Null, Null, '$' || SUM( Subtotal ) 
  FROM OD
 GROUP BY OrderID  
 ORDER BY OrderID

Действительно, некоторые другие системы управления базами данных используют некоторые функции и методы, такие как Cube(), Rollup() и GROUPING SETS().

Демо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...