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

news/2024/12/27 15:47:05/

完整执行顺序总结

  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.ppmy.cn/news/1558562.html

相关文章

第二章 并行为什么有时会慢?

第2章 2.1 速度的障碍 我们把计算实体称为进程&#xff0c;比如snow包中的worker。 并行计算中主要有两个性能相关的问题&#xff1a; 通信开销 负载平衡 2.2 性能和硬件结构 多处理器系统 就像它的名字所说一样&#xff0c;有两个或多个处理器&#xff0c; 例如&#xff…

3D架构图软件 iCraft Editor 正式发布 @icraftplayer-react 前端组件, 轻松嵌入3D架构图到您的项目,实现数字孪生

介绍 icraft/player-react 是 iCraft Editor 全新推出的 React 组件库&#xff0c;专为简化3D数字孪生场景的前端集成而设计。通过该组件&#xff0c;开发者可以轻松地将 iCraft Editor 制作的3D场景无缝嵌入到 React 项目中&#xff0c;并获得丰富的交互能力和实时数据集成特…

Ubuntu系统部署Mysql8.0后设置不区分大小写

部署MySQL # 更新系统软件包列表 sudo apt update# 安装MySQL Server sudo apt install mysql-server# 在安装时&#xff0c;系统会自动进行初始化&#xff0c;安装完成后MySQL已经处于运行状态# MySQL常见命令 #启动MySQL sudo systemctl start mysql#停止MySQL sudo systemc…

车载网关性能 --- 缓存buffer划分要求

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 所谓鸡汤,要么蛊惑你认命,要么怂恿你拼命,但都是回避问题的根源,以现象替代逻辑,以情绪代替思考,把消极接受现实的懦弱,伪装成乐观面对不幸的…

springboot489基于springboot的七彩云南文化旅游网站的设计与实现(论文+源码)_kaic

摘 要 传统办法管理信息首先需要花费的时间比较多&#xff0c;其次数据出错率比较高&#xff0c;而且对错误的数据进行更改也比较困难&#xff0c;最后&#xff0c;检索数据费事费力。因此&#xff0c;在计算机上安装七彩云南文化旅游网站软件来发挥其高效地信息处理的作用&am…

YOLOv10改进,YOLOv10添加Hyper-YOLO的MANet混合聚合网络

摘要 理论介绍 MANet 的目标是通过多种卷积操作的协同作用,提高特征提取能力,并加强梯度流动,从而提升模型在不同层次的特征表示和语义深度。MANet 结合了三种卷积变体,通过混合使用它们来提高视觉特征的多样性和信息流动性。 下图摘自论文: 理论详解可以参考链接:论文…

要查询 `user` 表中 `we_chat_open_id` 列不为空的用户数量

要查询 user 表中 we_chat_open_id 列不为空的用户数量&#xff0c;你可以使用以下 SQL 查询语句&#xff1a; SELECT COUNT(*) FROM user WHERE we_chat_open_id IS NOT NULL AND we_chat_open_id ! ;解释&#xff1a; SELECT COUNT(*): 表示要计算符合条件的行数。FROM us…

Ubuntu 22.04安装Docker

陈拓 2024/10/19-2024/12/26 0. 概述 docker是容器&#xff08;Container&#xff09;&#xff0c;有点像一个轻量级的虚拟机。 容器是一种轻量级、可移植、并将应用程序进行的打包的技术&#xff0c;使应用程序可以在几乎任何地方以相同的方式运行。Docker将镜像文件运行起…