掌握十大必备的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聚合函数,掌握它们将有助于你更有效地分析和处理数据。