Wann sollte „Gruppieren nach“ in SQL verwendet werden? In diesem Artikel wird die Verwendung von Group By im Detail erläutert. Die einfache Definition besteht darin, einen „Datensatz“ in mehrere „kleine Bereiche“ zu unterteilen und dann die Datenverarbeitung in mehreren „kleinen Bereichen“ durchzuführen. Welche Einschränkungen gelten für die Felder, die durch „Auswählen in Gruppieren nach“ angegeben werden? Apache PHP MySQL
„Gruppieren nach“ bedeutet wörtlich, Daten gemäß den durch „Nach“ festgelegten Regeln zu gruppieren. Teilen Sie es in mehrere „kleine Bereiche“ auf und führen Sie dann die Datenverarbeitung in mehreren „kleinen Bereichen“ durch.
Beispiel 1
select 类别, sum(数量) as 数量之和 from A group by 类别
Die zurückgegebenen Ergebnisse sind wie folgt folgt: Tatsächlich handelt es sich um eine Zusammenfassung.
Beispiel 2
select 类别, sum(数量) AS 数量之和 from A group by 类别 order by sum(数量) desc
Die zurückgegebenen Ergebnisse sind wie folgt
„Reihenfolge nach Mengensumme absteigend“ kann in Access nicht verwendet werden, wohl aber in SQL Server.
Beispiel 3
select 类别, sum(数量) as 数量之和, 摘要 from A group by 类别 order by 类别 desc
Nach der Ausführung von Beispiel 3 wird ein Fehler angezeigt, wie unten gezeigt. Dies ist zu beachten. Die in select angegebenen Felder müssen entweder nach der Group By-Anweisung als Grundlage für die Gruppierung eingefügt werden.
Beispiel 4
select 类别, 摘要, sum(数量) as 数量之和 from A group by all 类别, 摘要
In Beispiel 4 können Sie das Feld „Zusammenfassung“ angeben, weil „ „ „Mehrspaltige Gruppierung“ umfasst „Zusammenfassungsfeld“, und die Ausführungsergebnisse lauten wie folgt:
„Mehrspaltige Gruppierung“ ist tatsächlich eine Zusammenführung nach mehreren Spalten (Kategorie + Zusammenfassung) Gruppieren Sie die folgenden Werte. In Beispiel 4 können Sie sehen, dass „a, a2001, 13“ die Zusammenführung der beiden Datensätze „a, a2001, 11“ und „a, a2001, 2“ ist.
Obwohl „Group by All“ in SQL Server unterstützt wird, wird GROUP BY ALL in zukünftigen Versionen von Microsoft SQL Server gelöscht, um die Verwendung von GROUP BY ALL in neuen Entwicklungsarbeiten zu vermeiden. Access unterstützt nicht „Gruppieren nach allen“, aber Access unterstützt auch die mehrspaltige Gruppierung in Access als
select 类别, 摘要, sum(数量) AS 数量之和 from A group by 类别, 摘要
In Beispiel 3 wird erwähnt, dass das in der SELECT-Anweisung angegebene Feld das „Gruppierungsfeld“ sein muss. Wenn andere Felder in der SELECT-Anweisung angezeigt werden sollen, müssen diese in die Aggregatfunktion einbezogen werden lauten wie folgt:
函数 | 作用 | 支持性 |
---|---|---|
sum(列名) | 求和 | |
max(列名) | 最大值 | |
min(列名) | 最小值 | |
avg(列名) | 平均值 | |
first(列名) | 第一条记录 | 仅Access支持 |
last(列名) | 最后一条记录 | 仅Access支持 |
count(列名) | 统计记录数 | 注意和count(*)的区别 |
示例5:求各组平均值
select 类别, avg(数量) AS 平均值 from A group by 类别;
示例6:求各组记录数目
select 类别, count(*) AS 记录数 from A group by 类别;
示例7:求各组记录数目
where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,where条件中不能包含聚组函数,使用where条件过滤出特定的行。
having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件过滤出特定的组,也可以使用多个分组标准进行分组。
示例8
select 类别, sum(数量) as 数量之和 from A group by 类别 having sum(数量) > 18
示例9:Having和Where的联合使用方法
select 类别, SUM(数量)from A where 数量 gt;8 group by 类别 having SUM(数量) gt; 10
select * from A where 数量 > 8
执行结果:
示例10:Compute
select * from A where 数量>8 compute max(数量),min(数量),avg(数量)
执行结果如下:
compute子句能够观察“查询结果”的数据细节或统计各列数据(如例10中max、min和avg),返回结果由select列表和compute统计结果组成。
示例11:Compute By
select * from A where 数量>8 order by 类别 compute max(数量),min(数量),avg(数量) by 类别
执行结果如下:
示例11与示例10相比多了“order by 类别”和“... by 类别”,示例10的执行结果实际是按照分组(a、b、c)进行了显示,每组都是由改组数据列表和改组数统计结果组成,另外:
compute子句必须与order by子句用一起使用
compute...by与group by相比,group by 只能得到各组数据的统计结果,而不能看到各组数据
在实际开发中compute与compute by的作用并不是很大,SQL Server支持compute和compute by,而Access并不支持
相关文章:
相关视频:
Das obige ist der detaillierte Inhalt vonDas System organisiert die Verwendung von „Gruppieren nach' in SQL und die Einschränkungen für mehrere Felder von „Gruppieren nach'.. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!