mysql查询实践,有图有真相

作为一个知识码农,mysql查询技能是必须的,现罗列一些常用的语句和写法,以供参考。

示例的表说明:
表一 tb_visit_info 表
说明: 描述设备在时间段的访问信息

在这里插入图片描述

表二 tb_device_error_info 表

说明: 描述设备在时间段的访问错误统计
在这里插入图片描述

1 查看表数据 tb_visit_info

SELECT * FROM tb_visit_info

在这里插入图片描述

2 查看表数据 tb_device_error_info

SELECT * FROM tb_device_error_info

在这里插入图片描述

3 分组汇总

针对日期:2018-09-28,根据device_id做了访问总次数的汇总

SELECT device_id,app_id,date,
SUM(visit_num) AS total from tb_visit_info
where date='2018-09-28'
GROUP BY device_id

在这里插入图片描述

4 CASE 语句

小技巧:CASE语句:可以动态进行字段二次处理,例如:

SELECT CASE
WHEN total < 20 then "访问量少"
ELSE    "访问量达标"
END AS visit_label,total,device_id,date
FROM (SELECT device_id,app_id,date,
SUM(visit_num) AS total from tb_visit_info
where date='2018-09-28'
GROUP BY device_id) t1

上述语句利用CASE创建了新的字段visit_label,如下图:
在这里插入图片描述

5 错误数的汇总

下述语句对于设备做了错误数的汇总求和。

SELECT device_id,date,SUM(error_num)
from tb_device_error_info where date=
'2018-09-28' GROUP BY device_id

在这里插入图片描述

6 错误率的计算

将之前的俩个查询分别作为子表,进行错误率的计算,如下:

SELECT t1.device_id,t1.date,
t1.total_error/t2.total From
(SELECT device_id,date,SUM(error_num)
total_error from tb_device_error_info where
date='2018-09-28' GROUP BY device_id)
AS t1,
(SELECT device_id,app_id,date,SUM(visit_num)
AS total from tb_visit_info where date=
'2018-09-28' GROUP BY device_id)
AS t2
where t1.device_id=
t2.device_id and t1.date=t2.date

在这里插入图片描述

7 左连接

左连接示例

SELECT * from tb_visit_info t1 LEFT JOIN 
tb_device_error_info t2 ON  t1.device_id=
t2.device_id AND t1.date=t2.date

为了演示方便,从下图可以看出,在满足连接的条件下,设备在满足条件的情况下,对于不同小时段的记录,进行了连接操作,记录条数最后是倍乘的关系。
在这里插入图片描述
左连接的定义:在满足连接的条件下记录进行合并,而且,如果左面的表有记录,但是右表没有满足条件的记录,自动补NULL,如上图,结果中最下面那行,就有补NULL的情况出现。右连接同理。

8 右连接

SELECT * from tb_visit_info t1 RIGHT JOIN 
tb_device_error_info t2 ON  t1.device_id=
t2.device_id AND t1.date=t2.date

在这里插入图片描述

9 全连接

mysql无全连接命令,可以通过合并命令进行代替,如下:

SELECT * from tb_visit_info t1 RIGHT JOIN 
tb_device_error_info t2 ON 
t1.device_id=t2.device_id
AND t1.date=t2.date
UNION
SELECT * from tb_visit_info t1 LEFT JOIN 
tb_device_error_info t2 ON 
t1.device_id=t2.device_id
AND t1.date=t2.date

在这里插入图片描述

对照各图,就可以了解语句的含义,就酱紫啦,谢谢。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值