sql“字段列表”中的列“id”未知_【数据产品经理】之 - 新手玩转 SQL(二)

d13d497e4f13b0462056cbe8d5d18dec.png

前言

上篇文章,我们讲到了:什么是 SQL?什么是数据库?以及如何简单的使用 SQL?如果对这还不太清楚的话,建议翻回去熟悉一下再看这篇文章。

本片文章,我们就来详细的讲讲在日常数据分析工作中最常用的:数据查询语言(DQL)

一、SQL 查询基础点

1、查询所有列

基本结构:SELECT * FROM 数据库表名;

SELECT * FROM orderdata;

2、查询部分列

基本结构:SELECT 字段列表 FROM 数据库表名;

SELECT user_id FROM orderdata; 

3、排序返回结果

基本结构:SELECT 字段列表 FROM 数据库表名 ORDER BY [ASC/DESC] ;

1)升序查询:

SELECT user_id,car_no FROM orderdata ORDER BY co_time ASC;

2)降序查询;

SELECT user_id,car_no FROM orderdata ORDER BY co_time DESC;

4、限制返回结果

1)返回前几行:关键字LIMIT

基本结构:SELECT 字段列表 FROM 表名 LIMIT 10;

SELECT user_id,car_no,co_time  FROM orderdata ORDER BY  co_time DESC LIMIT 10; 

一般在两种情况下会使用:

① 想随便查看一下表中的数据;

② 一般与ORDER BY关键字配合使用,返回按某些字段排序后的前几行;

2)返回中间几行:关键字LIMIT M OFFSET N(从第N行开始,返回M行记录)

两种写法:

① 基本结构:SELECT 字段列表 FROM 数据库表名 LIMIT M OFFSET N;

SELECT user_id,car_no,co_time FROM  orderdata ORDER BY co_time DESC  LIMIT 10 OFFSET 2 ;

② 基本结构:SELECT 字段列表 FROM 数据库表名 LIMIT N,M;

SELECT user_id,car_no,co_time FROM  orderdata ORDER BY co_time DESC LIMIT 2,10;

3)返回后几行: 关键字LIMIT、ORDER BY

第1步:先按取车时间倒序排序;

第2步:返回排序后的前10行;

第3步:将前10行数据升序排序;

SELECT * FROM ( 
  SELECT * FROM orderdata  ORDER BY co_time DESC LIMIT 10 
  )ORDER BY co_time ASC

5、使用WHERE子句过滤数据

基本结构:SELECT 字段列表 FROM 数据库表名 WHERE 过滤条件;

过滤条件一般由要过滤的字段、操作符、限定值三部分组成;

SELECT user_id,car_no,car_type FROM orderdata  WHERE car_type = '保时捷';

6、常用操作符

87dce9236f455534bc089a70bfa90a44.png

7、使用通配符过滤数据

使用通配符过滤数据:关键字LIKE

ba4628bf8c1ef6c7b46603a0bb26c494.png
SELECT user_id,user_name,car_type FROM orderdata  WHERE user_name LIKE '李%'; 
SELECT user_id,user_name,car_type FROM orderdata  WHERE user_name LIKE '%飞'; 
SELECT user_id,user_name,car_type FROM orderdata  WHERE user_name LIKE '李_轩';

二、使用 SQL 进行数据分析

1、使用组合查询合并结果集 :UNION ALL 与 UNION

相同点:都是用来合并多个结果集

不同点:UNION ALL合并结果集后不去除重复记录; UNION合并结果集后去除重复记录;

SELECT * FROM student WHERE age = 10 
UNION SELECT * FROM student WHERE class_id = 'G0101' 
UNION SELECT * FROM student WHERE gender = '男'; 

2、常用汇总统计

总共有多少名学生?

SELECT COUNT(*) FROM student; 

所有学生的数学成绩总和?

SELECT SUM(score) FROM student; 

所有学生的数学成绩最高分?

SELECT MAX(score) FROM student; 

所有学生的数学成绩最低分?

SELECT MIN(score) FROM student; 

所有学生的数学成绩平均分?

SELECT AVG(score) FROM student;

3、分组汇总统计

如何获取每个班级的成绩平均分,以便比较不同班级的成绩?

基本结构:SELECT * FROM 数据库表名 GROUP BY 字段列表;

SELECT class_id,avg(score) FROM student GROUP BY class_id;

4、SELECT子句顺序

08ce8fd013f3da5df24b6b7e834d197a.png

获取每个班级的数学成绩平均分(不计算成绩在80分以下的学生且过滤掉平 均分在90分以下的班级),然后以平均分从高到低排序?

SELECT class_id,avg(score) FROM student WHERE score > 80 GROUP BY class_id HAVING avg(score) > 90 ORDER BY avg(score) DESC;

5、常见数值函数

7c7ff888da743a2e7dd7459d44ec37cd.png

6、常见文本函数

65d9ae40c32535844bbf38f4606796fe.png

7、常见日期和时间函数

43ffba5533ec0826613dcd5f2aa4b67e.png

下一篇文章,咱们来讲讲如何使用 SQL关联多张数据表进行数据分析,敬请期待...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值