SQL GROUP BY 分组

时间:2018-11-15 17:44:45  来源:igfitidea点击:

在本教程中,我们将学习如何使用SQL GROUP BY子句将行按照列或表达式的值进行分组并汇总。

SQL GROUP BY子句介绍

GROUP BY子句用于根据列或表达式的值将SELECT语句返回的行分组为多个汇总组。
然后可以对每个组使用诸如SUM、AVG、MIN、MAX或COUNT这样的聚合函数来输出汇总的信息。

GROUP BY的语法如下:

SELECT 
    column1, column2, aggregate_function(expression)
FROM
    table_name
WHERE
    condition
GROUP BY column1;

使用SUM函数的SQL GROUP BY示例

要获取每个产品的总单位成本,请使用GROUP BY子句和SUM函数,如下所示:

SELECT 
    productid,sum(unitcost)
FROM
    item
GROUP BY productid

数据库引擎执行以下步骤:
首先,检查GROUP BY子句,并根据每个产品id将产品分组。
其次,对每个组使用SUM函数计算单位成本的总数。

使用COUNT函数的SQL GROUP BY示例

下面的查询使用带有COUNT函数的GROUP BY子句来选择每个产品类别中的产品数量。

SELECT 
    category,count(productid)
FROM
    product
GROUP BY category

使用AVG函数的SQL GROUP BY示例

您可以使用GROUP by子句和AVG函数作为以下查询来检查每个产品的平均单位成本:

SELECT 
    productid,FLOOR(AVG(unitcost))
FROM
    item
GROUP BY productid

FLOOR函数用于获取不大于参数的最大整数值。

使用MIN和MAX函数的SQL GROUP BY 示例

选择每种产品项的最小和最大价格如下:

SELECT 
    productid,MIN(listprice),MAX(listprice)
FROM
    item
GROUP BY productid

SQL GROUP BY 和 ORDER BY同时使用示例

GROUP BY子句与ORDER BY子句一起用于对组进行排序。例如,你可以按产品数量对产品类别进行排序:

SELECT 
    category,count(productid)
FROM
    product
GROUP BY category
ORDER BY COUNT(productid) DESC;