Narktor:
私は、次の表を持っています:
select * from bestelldetails WHERE `Bestell-Nr` = 10870;
+------------+------------+-------------+--------+--------+
| Bestell-Nr | Artikel-Nr | Einzelpreis | Anzahl | Rabatt |
+------------+------------+-------------+--------+--------+
| 10870 | 35 | 18 | 3 | 0 |
| 10870 | 51 | 53 | 2 | 0 |
+------------+------------+-------------+--------+--------+
さて、最初に私はこのような各列の積「Einzelpreis(=個あたりの価格)」と「Anzahl(個)」を算出しました:
select *, Einzelpreis * Anzahl AS Rechnungssumme from bestelldetails WHERE `Bestell-Nr` = 10870;
+------------+------------+-------------+--------+--------+----------------+
| Bestell-Nr | Artikel-Nr | Einzelpreis | Anzahl | Rabatt | Rechnungssumme |
+------------+------------+-------------+--------+--------+----------------+
| 10870 | 35 | 18 | 3 | 0 | 54 |
| 10870 | 51 | 53 | 2 | 0 | 106 |
+------------+------------+-------------+--------+--------+----------------+
しかし、今、私は「Bestell-NR」のデータの各セットのSUMをしたいです。私はこのように試してみました:
select *, Einzelpreis * Anzahl AS Rechnungssumme from bestelldetails WHERE `Bestell-Nr` = 10870 GROUP BY `Bestell-Nr`;
+------------+------------+-------------+--------+--------+----------------+
| Bestell-Nr | Artikel-Nr | Einzelpreis | Anzahl | Rabatt | Rechnungssumme |
+------------+------------+-------------+--------+--------+----------------+
| 10870 | 35 | 18 | 3 | 0 | 54 |
+------------+------------+-------------+--------+--------+----------------+
しかし、これは、明らかに仕事をdoesntの。「Rechnungssumme」の中に、一つのレコードの唯一の製品は、データの各セットから集約のすべての値の合計ではなく、表示されています。
私の実際のユースケースでは、すべて自分の「Bestell-NR」と、異なる順序の数万人が存在します。これらの注文のそれぞれについて、この動作は、各列の積の和を計算して正しく表示されなければならない集計行を作成しなければなりません。
DmitriyH:
それは何が必要です:?
select sum(Anzahl) as Anazahl, sum(`Artikel-Nr`) as `Artikel-Nr`, sum(Einzelpreis) as Einzelpreis, sum(Rabatt) as Rabatt, sum(Einzelpreis * Anzahl) as Rechnungssumme, `Bestell-Nr` from bestelldetails GROUP BY `Bestell-Nr` HAVING `Bestell-Nr`=10870