当前位置: 首页 > article >正文

sql-DQL(持续更新中...)

完整执行顺序总结

  1. FROM:选择数据源并应用连接。
  2. WHERE:过滤记录。
  3. GROUP BY:分组数据。
  4. HAVING:过滤分组结果。
  5. SELECT:提取所需列并计算表达式。
  6. ORDER BY:对结果排序。
  7. LIMIT / OFFSET:限制返回记录数量。

SELECT user_id, SUM(total_price) AS TotalAmount
FROM Orders
WHERE total_price > 100
GROUP BY user_id
HAVING SUM(total_price) > 500
ORDER BY TotalAmount DESC
LIMIT 10;

临时表with...as 

字段合并

汇总函数

分组函数

自查询

视图

连接查询(左连接、内连接、右连接)

窗口函数(排名、累计、连续)

日期时间函数

1、空值:is (not) null

“教师表”中找出姓名为空值和不为空值的教师号

select 教师号 from 教师表 where 教师姓名 is null;

select 教师号 from 教师表 where 教师姓名 is not null

2、去除重复记录:distinct

SELECT DISTINCT user_id  FROM Orders  ORDER BY user_id;

返回唯一的user_id数据

假设 Orders 表中有如下数据:

order_iduser_idtotal_price
11100
21200
32150
42250
53300

执行查询后,结果将是:

user_id
1
2
3

SELECT DISTINCT user_id, total_price FROM Orders; 

返回 user_id 和唯一的 total_price 组合(多对一)

假设 Orders 表中有如下数据:

order_iduser_idtotal_price
11100
21200
32150
42150
53300

执行查询后,结果将是:

user_idtotal_price
1100
1200
2150
3300

3、case条件判断

“评分表”含有3个字段:房源号、城市、分数。求分数(满分10分)在0-5分、5-7分、7-9分、9分及以上的分别有多少个房源?

select count(房源号) from 评分表 group by 分数 

(case when 分数<5 then 房源号 end) as '0-5',

(case when 分数>=5 and 分数<7 then 房源号 end) as '5-7',

(case when 分数>=7 and 分数<9 then 房源号 end) as '7-9',

(case when 分数>=9  房源号 end) as '9+'

4、返回 每个访客和对应的浏览日期(每个访客同一天浏览多次算作一次记录)。

SELECT DISTINCT visitor_id, browse_date
FROM Visitor;

5、or

查询表中数据是否有空值的记录

select * from order where user_id is null or total_price is null

假设 Orders 表中有如下数据:

order_iduser_idtotal_priceorder_date
1101200.502024-12-01
2NULL150.002024-12-02
3103NULL2024-12-03
4NULLNULL2024-12-04
5105300.00

2024-12-05

运行上述查询后,返回以下记录:

order_iduser_idtotal_priceorder_date
2NULL150.002024-12-02
3103NULL2024-12-03
4NULLNULL2024-12-04

6、重命名:as

1. 列的别名

为列创建一个别名,通常用于更改结果集中列的标题。

SELECT user_id AS UserID, total_price AS TotalAmount FROM Orders;

2. 表的别名

为表创建别名,常用于复杂查询中简化表名,特别是在多表关联时。

SELECT o.order_id, u.user_name FROM Orders AS o JOIN Users AS u ON o.user_id = u.user_id;

3. 表达式的别名: as

SELECT product_id, quantity * price AS TotalPrice FROM OrderDetails;

4. 子查询的别名

SELECT o.UserID, o.TotalAmount FROM ( SELECT user_id AS UserID, SUM(total_price) AS TotalAmount FROM Orders GROUP BY user_id ) AS o WHERE o.TotalAmount > 1000;

5. 列的计算或拼接 

SELECT CONCAT(first_name, ' ', last_name) AS FullName FROM Users;

7、汇总函数(计数count()、和sum()、均值avg()、最值max/min(),合成一个结果)

为了监测新上市的产品的受欢迎程度,通过数据来分析用户的总数、用户的平均年龄、每个性别的平均年龄和用户总数、按年龄范围统计用户数量。

SELECT 
    COUNT(*) AS TotalUsers, 
    AVG(age) AS AverageAge
FROM Users;

假设 Users 表包含以下数据:

user_iduser_nameageemail
1Alice25alice@mail.com
2Bob30bob@mail.com
3CharlieNULLcharlie@mail.com
4Diana35diana@mail.com
5Eve40eve@mail.com

运行查询后,返回结果:

TotalUsersAverageAge
532.5


http://www.kler.cn/a/453933.html

相关文章:

  • Doris的SQL原理解析
  • 07-01-指针与数组
  • 使用FFmpeg进行拉流和推流操作
  • 解决 vue3 中 echarts图表在el-dialog中显示问题
  • Type-C单口便携显示器LDR6021
  • lv_ffmpeg学习及播放rtsp
  • OCR(二) TesseractOCR 语言包训练
  • Linux内核 -- UIO (User-space I/O) 简介与使用笔记
  • 使用Grafana中按钮插件实现收发HTTP请求
  • 【C语言】矩阵乘法
  • 如何查看个人电脑ip和修改ip
  • FFmpeg 的常用API
  • 【机器学习】探索机器学习与人工智能:驱动未来创新的关键技术
  • 归并排序:JAVA
  • IntelliJ IDEA 中 Editor > General > Appearance 设置:编辑器的视觉外观和行为
  • C++--------------树
  • RK3576 Android14编译OTA包提示java.lang.UnsupportedClassVersionError问题
  • STM32学习之 蜂鸣器
  • mac远程控制另一台mac怎么操作?
  • 电脑ip地址会变化吗?电脑ip地址如何固定
  • Postman接口测试01|接口测试基础概念、http协议、RESTful风格、接口文档
  • ELM回归-单隐层前馈神经网络(Single Hidden Layer Feedforward Neural Network)
  • STM32基于标准库如何查看时钟主频,100%简单
  • 使用 ECharts 与 Vue 构建数据可视化组件
  • 在linux系统中使用jdbc访问sqlite数据库时报错“java.lang.UnsatisfiedLinkError”
  • 一文流:Mysql my.cnf配置完整示例