sql - 文章奖品的 SQL SUM
问题描述
我是 SQL 的绝对新手,我想将所有文章的总和 * 订购金额加起来作为最终奖品。我尝试计算 Articles * 的数量为“Gesamtpreis”,然后计算方法 SUM() 来总结所有“Gesamtpreis”。别担心,SQL 代码是由 Access 自动生成的。
主要问题:
[Einzelpreis]*[Anzahl] AS Gesamtpreis, SUM(Gesamtpreis) AS FinalPreis
完整代码:
SELECT Kunden.Kundennr
, Kunden.Nachname
, Kunden.Vorname
, Kunden.Straße
, Kunden.PLZ
, Kunden.Ort
, Bestellung.Bestellnr
, Bestellung.Bestelldatum
, Bestelldetails.Artikelnr
, Bestelldetails.Anzahl
, Artikel.Artikelname
, Artikel.Einzelpreis
, Artikel.Hersteller
, [Einzelpreis]/119*19 AS MwStPreis
, [Einzelpreis]-[MwStPreis] AS EinzelpreisNetto
, [Einzelpreis]*[Anzahl] AS Gesamtpreis
, SUM(Gesamtpreis) AS FinalPreis
FROM Kunden INNER JOIN
(
(Artikel INNER JOIN
Bestelldetails ON Artikel.Artikelnr = Bestelldetails.Artikelnr
) INNER JOIN Bestellung ON Bestelldetails.Bestelldetailnr = Bestellung.Bestelldetailnr
) ON Kunden.Kundennr = Bestellung.Kundennr;
解决方案
使用聚合函数(例如SUM()
、COUNT()
等)时,您需要按该查询中不属于聚合函数的所有其他字段进行分组。对于您的情况,它将是这样的:
SELECT Kunden.Kundennr
, Kunden.Nachname
, Kunden.Vorname
, Kunden.Straße
, Kunden.PLZ
, Kunden.Ort
, Bestellung.Bestellnr
, Bestellung.Bestelldatum
, Bestelldetails.Artikelnr
, Bestelldetails.Anzahl
, Artikel.Artikelname
, Artikel.Einzelpreis
, Artikel.Hersteller
, [Einzelpreis]/119*19 AS MwStPreis
, [Einzelpreis]-[MwStPreis] AS EinzelpreisNetto
, [Einzelpreis]*[Anzahl] AS Gesamtpreis
, SUM([Einzelpreis]*[Anzahl]) AS FinalPreis
FROM Kunden INNER JOIN
(
(Artikel INNER JOIN
Bestelldetails ON Artikel.Artikelnr = Bestelldetails.Artikelnr
) INNER JOIN Bestellung ON Bestelldetails.Bestelldetailnr = Bestellung.Bestelldetailnr
) ON Kunden.Kundennr = Bestellung.Kundennr
GROUP BY Kunden.Kundennr
, Kunden.Nachname
, Kunden.Vorname
, Kunden.Straße
, Kunden.PLZ
, Kunden.Ort
, Bestellung.Bestellnr
, Bestellung.Bestelldatum
, Bestelldetails.Artikelnr
, Bestelldetails.Anzahl
, Artikel.Artikelname
, Artikel.Einzelpreis
, Artikel.Hersteller
, [Einzelpreis]/119*19
, [Einzelpreis]-[MwStPreis]
编辑:如果您正在寻找出现在每个条目上的所有条目的总和,那么您可以这样做:
SELECT Kunden.Kundennr
, Kunden.Nachname
, Kunden.Vorname
, Kunden.Straße
, Kunden.PLZ
, Kunden.Ort
, Bestellung.Bestellnr
, Bestellung.Bestelldatum
, Bestelldetails.Artikelnr
, Bestelldetails.Anzahl
, Artikel.Artikelname
, Artikel.Einzelpreis
, Artikel.Hersteller
, [Einzelpreis]/119*19 AS MwStPreis
, [Einzelpreis]-[MwStPreis] AS EinzelpreisNetto
, [Einzelpreis]*[Anzahl] AS Gesamtpreis
, [Total].[Total] AS [FinalPreis]
FROM (((((Kunden
INNER JOIN Bestellung ON Kunden.Kundennr = Bestellung.Kundennr)
INNER JOIN Bestelldetails ON Bestellung.Bestelldetailnr = Bestelldetails.Bestelldetailnr)
INNER JOIN Artikel ON Bestelldetails.Artikelnr = Artikel.Artikelnr)
INNER JOIN (
SELECT Kunden.Kundennr, 1 AS [Key]
FROM Kunden
) AS [Joiner] ON Kunden.Kundennr = [Joiner].Kundennr)
INNER JOIN (
SELECT 1 AS [Key], SUM(Artikel.Einzelpreis*Bestelldetails.Anzahl) AS [Total]
FROM Artikel
INNER JOIN Bestelldetails ON Artikel.Artikelnr = Bestelldetails.Artikelnr
) AS [Total] ON [Joiner].[Key] = [Total].[Key])
编辑:如果您正在寻找每个 Kunden 的条目总和:
SELECT Kunden.Kundennr
, Kunden.Nachname
, Kunden.Vorname
, Kunden.Straße
, Kunden.PLZ
, Kunden.Ort
, Bestellung.Bestellnr
, Bestellung.Bestelldatum
, Bestelldetails.Artikelnr
, Bestelldetails.Anzahl
, Artikel.Artikelname
, Artikel.Einzelpreis
, Artikel.Hersteller
, [Einzelpreis]/119*19 AS MwStPreis
, [Einzelpreis]-[MwStPreis] AS EinzelpreisNetto
, [Einzelpreis]*[Anzahl] AS Gesamtpreis
, [Total].[Total] AS [FinalPreis]
FROM ((((Kunden
INNER JOIN Bestellung ON Kunden.Kundennr = Bestellung.Kundennr)
INNER JOIN Bestelldetails ON Bestellung.Bestelldetailnr = Bestelldetails.Bestelldetailnr)
INNER JOIN Artikel ON Bestelldetails.Artikelnr = Artikel.Artikelnr)
INNER JOIN (
SELECT Kunden.Kundennr, SUM(Artikel.Einzelpreis*Bestelldetails.Anzahl) AS [Total]
FROM (((Kunden
INNER JOIN Bestellung ON Kunden.Kundennr = Bestellung.Kundennr)
INNER JOIN Bestelldetails ON Bestellung.Bestelldetailnr = Bestelldetails.Bestelldetailnr)
INNER JOIN Artikel ON Bestelldetails.Artikelnr = Artikel.Artikelnr)
GROUP BY Kunden.Kundennr
) AS [Total] ON Kunden.Kundennr = [Total].Kundennr)
编辑:如果您正在寻找每个 Kunden 和 Bestellung 的条目总和:
SELECT Kunden.Kundennr
, Kunden.Nachname
, Kunden.Vorname
, Kunden.Straße
, Kunden.PLZ
, Kunden.Ort
, Bestellung.Bestellnr
, Bestellung.Bestelldatum
, Bestelldetails.Artikelnr
, Bestelldetails.Anzahl
, Artikel.Artikelname
, Artikel.Einzelpreis
, Artikel.Hersteller
, [Einzelpreis]/119*19 AS MwStPreis
, [Einzelpreis]-[MwStPreis] AS EinzelpreisNetto
, [Einzelpreis]*[Anzahl] AS Gesamtpreis
, [Total].[Total] AS [FinalPreis]
FROM ((((Kunden
INNER JOIN Bestellung ON Kunden.Kundennr = Bestellung.Kundennr)
INNER JOIN Bestelldetails ON Bestellung.Bestelldetailnr = Bestelldetails.Bestelldetailnr)
INNER JOIN Artikel ON Bestelldetails.Artikelnr = Artikel.Artikelnr)
LEFT JOIN (
SELECT Kunden.Kundennr, Bestellung.Bestellnr, SUM(Artikel.Einzelpreis*Bestelldetails.Anzahl) AS [Total]
FROM (((Kunden
INNER JOIN Bestellung ON Kunden.Kundennr = Bestellung.Kundennr)
INNER JOIN Bestelldetails ON Bestellung.Bestelldetailnr = Bestelldetails.Bestelldetailnr)
INNER JOIN Artikel ON Bestelldetails.Artikelnr = Artikel.Artikelnr)
GROUP BY Kunden.Kundennr, Bestellung.Bestellnr
) AS [Total] ON Kunden.Kundennr = [Total].Kundennr AND Bestellung.Bestellnr = [Total].Bestellnr)
推荐阅读
- python - Cythonize 具有许多文件夹的项目
- angular - 使用“HttpClient”Angular 8 进行多次调用
- ruby-on-rails - 在 Ruby on Rails 上同时执行多个消费 web 服务的进程
- scala - 运行 Kafka 应用程序时 Intellij 中的线程“main”java.lang.NoClassDefFoundError:com/fasterxml/jackson/databind/Module 中的异常?
- javascript - 如何在反应中使用 tabIndex 来处理 OnKeyDown 捕获事件?
- java - How to check whether empty or not every element of Varargs by recursive in Java?
- asp.net-core - 如何在 ASP.NET Core MVC 应用程序中配置 Blazor Hub 映射
- python - pyqt5更改按钮随机随机崩溃
- mysql - MongoDB 聚合查询与 MySQL SELECT field1 FROM table
- c++ - Is there a way I can load a cursor without restarting or logging out?