Gehen wir durch das, was passiert in der SQL-Aggregation verwenden können. Angenommen, Sie verstehen den Verweis auf die Tabelle und was in der WHERE-Klausel passiert, werde ich nur über Aggregat Funktionen und GROUP BY sprechen.
Aggregate sind relativ einfache Funktionen, die vor der Gruppierung auf alle Zeilen in Ihrer Abfrage angewendet werden. Wenn Sie also eine Abfrage wie diese schreiben:
SELECT count(*) FROM MyTable
Die Aggregatfunktion zählt alle Zeilen in der Tabelle. Summe, Durchschnitt, sind auch Aggregate. Wenn Sie Zählungen für verschiedene Teilmengen in der Tabelle anzeigen möchten, müssen Sie ein GROUP BY-Qualifikationsmerkmal angeben. Dadurch wird das Aggregat so geändert, dass die Anzahl der Zeilen für jede E-Mail gezählt wird.
SELECT email, count(*) FROM MyTable GROUP BY email
Beachten Sie, dass wir explizit auf E-Mail in der SELECT, sowie in der GROUP BY verweisen müssen.
Also, um Ihre Frage zu beantworten, ich denke, Sie brauchen eine Abfrage wie folgt.
SELECT
[Email]
, COUNT(*) AS order_count
, SUM([Amount]) AS total_amount
, AVG([Amount]) AS avg_amount
FROM
[TBW_BI].[dbo].[Dreams$Internet Orders]
WHERE
[Country]='RUSSIA'
AND [order date] >= '2016-11-18T00:00:00.000'
AND [order date] <= '2017-04-10T00:00:00.000'
GROUP BY
[Email]
Nur eine andere Sache zu wissen, wo vor der Aggregation angewandt wird, so kann es nicht filtern Ihre gruppierten Ergebnisse verwendet werden. Wenn Sie braucht etwas wie Filter zu tun, nach unten zu E-Mail, die mehr als zwei Aufträge hätte, würden Sie eine HAVING-Klausel bis zum Ende der Abfrage wie so hinzufügen:
...
HAVING
count(*) >= 2
Hinweis: COUNT() ',' SUM() ',' AVG() '. –
@ Giridhar, Was hast du versucht ..? – Mansoor
Ich habe versucht, count() und sum(), aber ich bin neu in SQL Bit verwirrt. – jiroe