14.函数:在 SQL 中,时间函数是用于处理日期和时间的特殊函数。它们允许我们在查询中操作和处理日期、时间、日期时间数据,从而使得在数据库中进行时间相关的操作变得更加方便和灵活。
- DATE:获取当前日期 date()
- DATETIME:获取当前日期时间 datetime()
- TIME:获取当前时间 time()
对比
| current_date | current_datetime | current_time |
|---|---|---|
| 2023-08-01 | 2023-08-01 14:30:00 | 14:30:00 |
-- 获取当前日期
SELECT DATE() AS current_date;
-- 获取当前日期时间
SELECT DATETIME() AS current_datetime;
-- 获取当前时间
SELECT TIME() AS current_time;
假设有一个学生表 student,包含以下字段:name(姓名)、age(年龄)。
请你编写一个 SQL 查询,展示所有学生的姓名(name)和当前日期(列名为 "当前日期")
select name,date() as "当前日期"
from student;
15.函数--字符串 在 SQL 中,字符串处理是一类用于处理文本数据的函数。它们允许我们对字符串进行各种操作,如转换大小写、计算字符串长度以及搜索和替换子字符串等。字符串处理函数可以帮助我们在数据库中对字符串进行加工和转换,从而满足不同的需求
1)使用字符串处理函数 UPPER 将姓名转换为大写:
-- 计算姓名长度
SELECT name, LENGTH(name) AS name_length
FROM employees;
-- 将姓名转换为大写
SELECT name, UPPER(name) AS upper_name
FROM employees;
假设有一个学生表 student,包含以下字段:id(学号)、name(姓名)。请你编写一个 SQL 查询,筛选出姓名为 '热dog' 的学生,展示其学号(id)、姓名(name)及其大写姓名(upper_name)。
select id,name, upper(name) as upper_name
from student where name="热dog";
16.函数--聚合函数
在 SQL 中,聚合函数是一类用于对数据集进行 汇总计算 的特殊函数。它们可以对一组数据执行诸如计数、求和、平均值、最大值和最小值等操作。聚合函数通常在 SELECT 语句中配合 GROUP BY 子句使用,用于对分组后的数据进行汇总分析。
常见的聚合函数包括:
- COUNT:计算指定列的行数或非空值的数量。
- SUM:计算指定列的数值之和。
- AVG:计算指定列的数值平均值。
- MAX:找出指定列的最大值。
- MIN:找出指定列的最小值。
假设有一个订单表 orders,包含以下字段:order_id(订单号)、customer_id(客户编号)、amount(订单金额)。数据如下:
| order_id | customer_id | amount |
|---|---|---|
| 1 | A001 | 100 |
| 2 | A002 | 200 |
| 3 | A001 | 150 |
| 4 | A003 | 50 |
1)使用聚合函数 COUNT 计算订单表中的总订单数:
SELECT COUNT(*) AS order_num
FROM orders;
查询结果:
| order_num |
|---|
| 4 |
2)使用聚合函数 COUNT(DISTINCT 列名) 计算订单表中不同客户的数量:
SELECT COUNT(DISTINCT customer_id) AS customer_num
FROM orders;
查询结果:
| customer_num |
|---|
| 3 |
3)使用聚合函数 SUM 计算总订单金额:
SELECT SUM(amount) AS total_amount
FROM orders;
查询结果:
| total_amount |
|---|
| 500 |
假设有一个学生表 student,包含以下字段:id(学号)、name(姓名)、class_id(班级编号)、score(成绩)。请你编写一个 SQL 查询,汇总学生表中所有学生的总成绩(total_score)、平均成绩(avg_score)、最高成绩(max_score)和最低成绩(min_score)。
select sum(score) as total_score,
avg(score) as avg_score,
max(score) as max_score,
min(score) as min_score
from student;
17.分组聚合---单字段分组
在 SQL 中,分组聚合是一种对数据进行分类并对每个分类进行聚合计算的操作。它允许我们按照指定的列或字段对数据进行分组,然后对每个分组应用聚合函数,如 COUNT、SUM、AVG 等,以获得分组后的汇总结果。
举个例子:某个学校可以按照班级将学生分组,并对每个班级进行统计。查看每个班级有多少学生、每个班级的平均成绩。这样我们就能够对学校各班的学生情况有一个整体的了解,而不是单纯看个别学生的信息。 在 SQL 中,通常使用 GROUP BY 关键字对数据进行分组。
假设有一个学生表 student,包含以下字段:id(学号)、name(姓名)、class_id(班级编号)、score(成绩)。请你编写一个 SQL 查询,统计学生表中的班级编号(class_id)和每个班级的平均成绩(avg_score)。
select class_id , avg(score) as avg_score
from student
group by class_id;
18. 分组聚合---多字段分组
有时,单字段分组并不能满足我们的需求,比如想统计学校里每个班级每次考试的学生情况,这时就可以使用多字段分组。多字段分组和单字段分组的实现方式几乎一致,使用 GROUP BY 语法即可。
-- 查询每个班级每次考试的学生人数
SELECT customer_id, product_id, SUM(amount) AS total_amount
FROM orders
GROUP BY customer_id, product_id;
假设有一个学生表 student,包含以下字段:id(学号)、name(姓名)、class_id(班级编号)、exam_num(考试次数)、score(成绩)。请你编写一个 SQL 查询,统计学生表中每个班级每次考试的总学生人数(total_num)。
select class_id,exam_num,count(*) as total_num
from student
group by class_id,exam_num;
19.分组聚合---having字句
在 SQL 中,HAVING 子句用于在分组聚合后对分组进行过滤。它允许我们对分组后的结果进行条件筛选,只保留满足特定条件的分组。
HAVING 子句与条件查询 WHERE 子句的区别在于,WHERE 子句用于在 分组之前 进行过滤,而 HAVING 子句用于在 分组之后 进行过滤。
假设有一个订单表 orders,包含以下字段:order_id(订单号)、customer_id(客户编号)、amount(订单金额)。数据如下:
SELECT customer_id, COUNT(order_id) AS order_num
FROM orders
GROUP BY customer_id
HAVING COUNT(order_id) > 1;
假设有一个学生表 student,包含以下字段:id(学号)、name(姓名)、class_id(班级编号)、score(成绩)。请你编写一个 SQL 查询,统计学生表中班级的总成绩超过 150 分的班级编号(class_id)和总成绩(total_score)。
select class_id ,sum(score) as total_score
from student
group by class_id
having sum(score)>150;
本文介绍了SQL中的时间函数用于处理日期和时间,包括获取当前日期/时间,以及如何在SQL查询中操作。同时讲解了字符串处理函数,如转换大小写和计算长度。此外,文章详细介绍了聚合函数和分组聚合,包括单字段和多字段分组,以及HAVING子句的应用。
474

被折叠的 条评论
为什么被折叠?



