SQL 聚合函数
在本文中,让我们来探讨一下SQL中的一个新主题,即聚合函数。首先,让我们了解一下什么是聚合函数以及它是如何工作的。
聚合函数是什么?
SQL中的聚合函数是一组特殊的函数,它们对表中的一组行进行操作,并产生一个单一的值作为结果。这些操作用于计算一组数字并生成汇总统计信息,如总和、计数、平均值、最大值和最小值。SQL查询经常使用聚合函数来从一个或多个表中压缩数据。
在分组和聚合之后,聚合函数还可以与HAVING或WHERE子句一起使用,进一步过滤数据。涉及聚合函数的条件可以用于使用HAVING或WHERE子句过滤查询结果。
以下是SQL中一些常用的聚合函数。让我们通过各种示例来了解每个函数。
- 计数(Count())
- 总和(Sum())
- 平均值(Avg())
- 最小值(Min())
- 最大值(Max())
1. COUNT()
该函数返回表中记录(行)的数量。count()函数的语法如下所示。
语法:
SELECT COUNT(column_name) FROM table_name WHERE condition;
在这里,column_name是你想要了解值的列的名称,而WHERE子句只在提取满足条件的特定数据时使用。
例如:考虑下面的“Student”表,以了解Count()函数的工作原理。
Roll_no | Student_name | Department |
---|---|---|
421 | Abhishek | CSE |
422 | Praveen | EEE |
423 | Rehman | ECE |
424 | Priyanka | IT |
425 | Anish | CSE |
学生
select COUNT(*) FROM Student;
输出:
COUNT(*)
---
5
现在,让我们将 WHERE 子句附加到 COUNT() 语句中,并查看其工作原理。
select COUNT(*) FROM Student WHERE Department = 'CSE';
输出:
COUNT(*)
---
2
2. SUM()
这个函数返回表中某一列的所有数值的和。下面是sum ()函数的语法。
语法:
SELECT SUM(column_name) FROM table_name WHERE condition;
在这里,column_name是您想要找到总和的列的名称,并且WHERE子句仅在您想要将SUM()函数应用于满足条件的数据时使用。
例如:观察下面的示例,以了解SUM函数的功能。
表:销售
Product_id | Product_name | Price |
---|---|---|
1 | Laptop | 50000 |
2 | Shirt | 500 |
3 | Watch | 700 |
4 | Mobile | 20000 |
5 | Keyboard | 1800 |
6 | Mobile | 18000 |
select SUM(Price) FROM sales;
输出:
SUM(Price)
---
91000
现在让我们计算销售表中存在的手机价格总和。
select SUM(price) FROM sales WHERE Product_name = 'Mobile';
输出:
SUM(Price)
---
38000
3. AVG()
此函数将返回列中所有值的平均值 . AVG()函数的语法如下所示。
语法:
SELECT AVG(column_name) FROM table_name WHERE condition;
这里column_name是你需要计算平均值的列的名称,并且WHERE子句仅在你想要对满足条件的数据应用AVG()函数时使用。
让我们再次考虑一下”sales”表,对其应用AVG()函数,看看它是如何工作的。
表: Sales
Product_id | Product_name | Price |
---|---|---|
1 | Laptop | 50000 |
2 | Shirt | 500 |
3 | Watch | 700 |
4 | Mobile | 20000 |
5 | Keyboard | 1800 |
6 | Mobile | 18000 |
现在让我们使用AVG()函数找出所有产品价格的平均值。
SELECT AVG(Price) FROM sales;
输出结果:
AVG(Price)
---
15166
现在,让我们使用WHERE子句与AVG()函数的组合来找出只有手机的平均价格。
SELECT AVG(Price) FROM sales WHERE Product_name = 'Mobile';
输出:
AVG(Price)
---
19000
4. MIN()
这个函数在满足给定条件的一组行中产生列中的最小值。 MIN()函数的语法如下:
语法:
SELECT MIN(column_name) FROM table_name WHERE condition;
让我们考虑下面的员工表格来说明MIN函数的功能。
员工
emp_id | emp_name | salary | department |
---|---|---|---|
155 | Hafeez | 40000 | Sales |
156 | Krishna | 25000 | Marketing |
157 | Kalyan | 20000 | R&D |
158 | Kaveri | 50000 | R&D |
159 | Lavanya | 60000 | HR |
160 | Hrithik | 12000 | Marketing |
现在让我们应用MIN函数来查找薪水列中的最小值。
SELECT MIN(salary) FROM employees;
输出:
MIN(salary)
---
12000
现在让我们找出研发部门的最低工资。
SELECT MIN(salary) FROM employees WHERE department = 'R&D';
输出:
MIN(salary)
---
20000
5. MAX()
SQL中的MAX函数用于在表中满足给定条件的一组行中返回一个列中的最大值。MAX语法如下:
语法:
SELECT MAX(column_name) FROM table_name WHERE condition;
重新考虑一下员工表来理解MAX函数的功能。
员工
emp_id | emp_name | salary | department |
---|---|---|---|
155 | Hafeez | 40000 | Sales |
156 | Krishna | 25000 | Marketing |
157 | Kalyan | 20000 | R&D |
158 | Kaveri | 50000 | R&D |
159 | Lavanya | 60000 | HR |
160 | Hrithik | 12000 | Marketing |
现在让我们使用MAX()函数找出薪资列中的最大值。
select MAX(salary) FROM employees;
输出:
MAX(salary)
---
60000
现在结合WHERE子句和MAX()函数,找出市场营销部门的最高工资。
select MAX(salary) FROM employees WHERE department = 'Marketing';
输出:
MAX(salary)
---
25000
这就是关于SQL中的聚合函数的一切。您可以使用聚合函数对一个表或者一组表中的数据进行汇总和分析。它们对于产生汇总统计数据是必要的,并且可以帮助您找到对复杂数据问题的简单答案。