掌握十大必备的SQL聚合函数,助你成为数据分析高手!


当处理数据时,SQL聚合函数是非常有用的工具,它们允许我们对数据进行汇总和计算。下面是十个必知必会的SQL聚合函数:

1. COUNT():计算表中行的数量

语法:SELECT COUNT(*) AS total_rows FROM table_name;
案例:假设我们有一个名为"customers"的表,其中有一个"customer_id"列用于标识不同的客户。我们可以使用COUNT()函数来计算总客户数:

SELECT COUNT(customer_id) AS total_customer FROM customers;  -- as可省略

2. SUM():计算表中某个数值列的总和

语法:SELECT SUM(column_name) AS total_sum FROM table_name;
案例:假设我们有一个名为"sales"的表,其中有一个"amount"列表示每笔销售的金额。我们可以使用SUM()函数来计算总销售额:

SELECT SUM(amount) FROM sales;

3. AVG():计算表中某个数值列的平均值

语法:SELECT AVG(column_name) AS average_value FROM table_name;
案例:继续使用上面的"sales"表,我们可以使用AVG()函数来计算平均销售额:

SELECT AVG(amount) FROM sales;

4. MAX():找出表中某个数值列的最大值

语法:SELECT MAX(column_name) AS max_value FROM table_name;
案例:假设我们有一个名为"products"的表,其中有一个"price"列表示每个产品的价格。我们可以使用MAX()函数来找到最高价格的产品:

SELECT MAX(price) FROM products;

5. MIN():找出表中某个数值列的最小值

语法:SELECT MIN(column_name) AS min_value FROM table_name;
案例:继续使用上面的"products"表,我们可以使用MIN()函数来找到最低价格的产品:

SELECT MIN(price) FROM products;

6. GROUP_CONCAT():将表中某个字符串列的值连接起来

语法:SELECT GROUP_CONCAT(column_name SEPARATOR ', ') AS merged_values FROM table_name;
案例:假设我们有一个名为"orders"的表,其中有一个"product_name"列表示每个订单中所购买的产品的名称。我们可以使用GROUP_CONCAT()函数将所有产品名称连接为一个字符串:

ELECT GROUP_CONCAT(product_name) FROM orders;

7. DISTINCT():找出表中某个列的唯一值

语法:SELECT DISTINCT column_name FROM table_name;
案例:假设我们有一个名为"employees"的表,其中有一个"department"列表示员工所在的部门。我们可以使用DISTINCT()函数找出所有不同的部门:

SELECT DISTINCT(department) FROM employees;

8. HAVING:用于过滤GROUP BY子句的结果

语法:SELECT column_name, COUNT(*) AS count FROM table_name GROUP BY column_name HAVING count > 5;
案例:假设我们使用GROUP BY和SUM()函数来计算每个部门的总销售额,然后使用HAVING子句筛选出销售额大于100000的部门:

SELECT department, SUM(amount) FROM sales GROUP BY department HAVING SUM(amount) > 100000;

9. RANK():计算指定列的排名

它会为每一行赋予一个排名值,根据列的值进行排序。使用RANK()函数的示例如下:

SELECT column1, column2, RANK() OVER (ORDER BY column3) AS ranking
FROM your_table;

在上面的示例中,你需要替换以下内容:

  • column1, column2:要查询的列名。
  • your_table:要查询的表名。
  • column3:用于排序和计算排名的列名。

RANK()函数必须结合OVER子句和ORDER BY子句使用。ORDER BY子句用于指定按照哪一列的值进行排序。然后,RANK()函数将会为每一行赋予一个排名值,并将结果作为ranking列返回。

注意,如果存在并列的值,RANK()函数会给这些值赋予相同的排名,然后跳过下一个排名。例如,如果有两个值排名第三,那么下一个值的排名将会是第五。

10. FIRST()和LAST():用于返回组内的第一个和最后一个非NULL值

这两个函数通常与GROUP BY子句一起使用,以指定组的范围。使用FIRST()函数和LAST()函数的示例:

SELECT group_column, FIRST(column) AS first_value, LAST(column) AS last_value
FROM your_table
GROUP BY group_column;

案例:假设我们有一个名为"orders"的表,其中有一个"order_date"列表示订单的日期。我们可以使用FIRST()和LAST()函数找出第一个和最后一个订单的日期:

SELECT FIRST(order_date), LAST(order_date) FROM orders GROUP BY order_date;

以上是十个常用的SQL聚合函数,掌握它们将有助于你更有效地分析和处理数据。

03-13 23:38