![17ca8b5980d05a16eb0c878970278ff3.png](https://i-blog.csdnimg.cn/blog_migrate/e5ecee4587a03d32bbb201c87e8008a1.jpeg)
最近在工作中需要查询一些数据进行数据分析,又不好每次都麻烦开发小哥哥,于是只能动手自己查询。今天就来聊聊如何取数。(其实严格意义上来说,SQL不能算是一门编程语言,只能算是一个取数工具。)
学习SQL的好处
1、不用每次都麻烦开发
找开发小哥哥给你查询数据,你可能得等半天,而自己查询的话,一两分钟的事情。即装逼,又高效。
2、为转型数据产品经理打下基础
很多小伙伴都说自己想做数据产品经理,想做人工智能产品经理。不论是人工智能还是大数据产品经理都是需要和数据打交道的,想做人工智能首先就要学习机器学习,机器本身就需要大量的数据进行喂养才能达到学习的效果。而大部分的数据来源都是公司的数据仓库,SQL语言可以帮你了解机器学习的指标体系构建和特征提取。
3、高效处理数据
产品经理日常和数据打交道的场景很多。大部分同学可能都是通过EXCEl进行数据的可视化,比如做数据透视表这些。但是如何从多张表执行繁杂的“连接”操作和“分组”后“选择”需要的字段,这些EXCEl实现不了,但是对于SQL来说就是一句话的事情。
SQL实例讲解
1、数据库单表查询
1.1 基本的查询语法
select 列名 ---查询指定要显示的字段;如果要查看所有的列,则用*号表示
From 表A ---选择要查询的表
where 限制条件 ---各种过滤条件,例如:大于,小于等
Group by ---按指定列名进行分组统计。比如今天新增了多少名会员,今天形成了多少笔订单
Having 列名 ---对分组统计的结果进行限制。主要用来做顾虑。比如我统计每天的订单总数是多少,统计出来以后,我想知道订单总数大于100 的是多少,主要对Group by统计之后的数据进行过滤
Order by 列名 ---对查询结果进行排序(ASC升序,Desc降序),默认是升序
Limit N ---给出N条数据
1.2 实例讲解
比如订单 by_order表结构:
![b7e466724bb0ffcf8aa530ff4283977d.png](https://i-blog.csdnimg.cn/blog_migrate/573c8dcf45a33154371879348bcff84c.jpeg)
例子1:查询表前10行数据
![5daeea04f61ad43ffff31763f072c571.png](https://i-blog.csdnimg.cn/blog_migrate/a85838c5fd3a8b0fa5e93dcfb43e47b1.jpeg)
例子2:找出订单金额大于200的顾客
![c505dc99eabe230d2a88a30cc152e59d.png](https://i-blog.csdnimg.cn/blog_migrate/6530245c7b46a175eaeefc1388dc4067.jpeg)
如果会员重复怎么办呢?比如同个会员买了两次,每次金额都大于200,但我只想知道买过的金额大于200的会员有哪些,这个时候该怎么办呢?
答案是可以用distinct去重。
![4d8d6e67a1a1a5de95896b5db2ab6a6d.png](https://i-blog.csdnimg.cn/blog_migrate/9e8b2dcd17f74de197e7ef75c3dec208.jpeg)
例子3:找出订单金额大于20小于200的顾客
![29ad28599890eb9003e8fdf69a945606.png](https://i-blog.csdnimg.cn/blog_migrate/731894887d49a59bfd784f1a20dd5782.jpeg)
例子4:按照订单金额进行排序
![ca65681d7f1add7d5d0b23faef00c9ac.png](https://i-blog.csdnimg.cn/blog_migrate/1511cac1b33f5cf07552cdf813600203.jpeg)
如果你想降序排列
![be76257992e85b59cbf191a43c80e91f.png](https://i-blog.csdnimg.cn/blog_migrate/c0ec4bfbb4edda295a56c72fcb8cdf9c.jpeg)
1.3 汇总:group by
实际工作中的你也不会只看订单明细,而需要看看每一天的订单总额、每个顾客的每天购买金额这类数据,那这种统计类的数据就需用到Group by了。
Group by 一定是跟着汇总函数一起使用
基本的汇总函数有以下几项:
max() 统计最大
min() 统计最小
count() 计数,如果需要去计算列去重,则count(distinct)
avg() 计算平均数
sum() 汇总
例子1:统计顾客的累计购买金额
![9324eaad2db4bd2ea131cd1b259efe1c.png](https://i-blog.csdnimg.cn/blog_migrate/5c80b66ab8a1b7d268e15ea6c3d35a3c.jpeg)
例子2:统计各个顾客的每天购买金额
![9573c184a46d9159ebc7eb4b48266865.png](https://i-blog.csdnimg.cn/blog_migrate/fe779ecedda1324dd1fe43241f9915af.jpeg)
备注:as sum_money 和as as day_1 都是取别名用的。
如果不写as sum_money,则显示的是左边的列表,如果加入as sum_money 则最终结果显示的下图右边的表格
![de437ee0e6701e0d88ec19878108ec3b.png](https://i-blog.csdnimg.cn/blog_migrate/5b5f84dc05ceccc0083d8d32dc6cd07b.jpeg)
遇到不懂的技术问题怎么办?
1、询问技术
抽屉里常备一些零食,没事给同事发一发,平时多帮帮别人,下次向人请教,别人也愿意帮助你。
2、百度
能百度找到答案的问题都不是问题。不要懒,也不要轻易麻烦别人。在工作中也一样,自己能解决的问题不要找领导,除非拼尽全力也解决不了。
3、多实践
掌握的技术知识还得在实践中多练习。就像高中物理老师给我们上完课以后,我们需要通过大量的习题来巩固知识一样。学习到的这些知识还是得在实践中多多练习。
下一次我们将分享多表查询,喜欢的小伙伴可关注微信公众号:chanpinliu880
有疑问的小伙伴也可以加微信:chanpin628进行交流。