产品经理学SQL - 需要知道的6个好习惯

作者: 348c795dead5 | 来源:发表于2020-01-02 11:56 被阅读0次

引言

最近在做一项业务的数据分析,调用的数据超过了目前公司配置的ETL工具能处理的范围,被迫营业,又捡起了SQL。熟悉SQL的同学请关掉本文,免得我班门弄斧。

01 - 工欲善其事,必先利其器

但是秉着务实的角度,解决问题并不需要追求牛逼的工具——Excel透视表能解决的,就用Excel,根本不需要搬出SQL、R、Python。

但如果被迫要写SQL,我建议使用DataGrip IDE。它界面友好,可以直连数据库运行,含自动排版功能,有自动联想提示,还有语法纠正,减少了犯低级错误的概率。淘宝搜索一下,可以解锁Pro版本,不差钱的请从官方渠道购买。

DataGrip界面

2、描绘旅途终点

以前向BI提数据分析需求时,他们往往会让我提交一份预期终表的表头。自己写的时候也是一样,必须明确:目标表的表头是什么。从这个最终的目标再反向推,有哪些现有的数据,通过聚合、计算,可以拼凑出这个最终的图景。

旅途终点

3、什么都不如官方文档好

知道最基本的select from where后,其余所有的语法都可以通过搜索后使用。

---SQL三板斧:
​select 字段1,字段2,字段3  ---最终表需要呈现的字段/列
from form1              ---从什么表抽取
where 字段1!=0, 字段2>2  ---限制条件

但有时候在百度搜索到的语法,并不适用你所调用的数据库类型。像我司使用的数据库是Vertica,所以在一些SQL的语法上,存在特殊的写法,这时候,官方的文档即是最好的wiki(https://www.vertica.com/docs)。通常在百度搜到的文章会是csdn的文章,官网不知道在哪里,所以有条件的同学最好使用Google。

https://www.vertica.com/docs

4、了解SQL执行顺序,提高效率

与直观相违背的是,SQL执行的顺序,并不是语法上常见的顺序(比如在尾部增加limit 50,其实只是展示量控制在50,实际的计算量并没有少,只是在展示时显示的数量变少):

---左侧序号为实际执行顺序,右侧为书写顺序
(7) SELECT
(8) DISTINCT <select_list>
(1) FROM <left_table>
(3) <join_type> JOIN <right_table>
(2) ON <join_condition>
(4) WHERE <where_condition>
(5) GROUP BY <group_by_list>
(6) HAVING <having_condition>
(9) ORDER BY <order_by_condition>
(10) LIMIT <limit_number>

知道这个有什么用呢?比如把限制条件写在on和where上,是否有区别?肯定有区别。因为执行顺序,是先on再where。知晓其执行原理,会让语句的排布更加科学。

5、分而治之,面向对象查询

这里的意思是,尽量避免嵌套,除非你脑容量比较大,逻辑清晰。层层嵌套很容易把人绕晕——定位问题、检查数据非常麻烦,根本不知道哪个环节错了。

---层层嵌套
select * from (select * from aaa) a 
         join (select * from bbb) b on xx
         join (select * from ccc) c on yy
         join (select * from ddd) d on zz
         
---或者另外一种写法:
with tableA as ( select * from aaa ),
with tableB as ( select * from bbb ),
with tableC as ( select * from ccc ), 
select * from xxx

所以尽量多使用中间表,当语句复杂到一定程度时,需要有意识的停止编写,让它成为一个独立的数据表。

创建中间表,只需要找到数据库上你有建表权限的一个地方,使用create table xxx,然后接着select语句即可。如果要更新数据,则使用drop table xxx,删除即可。

---把drop放前面,整体运行时会先删除原表,再把新的数据存入同名的表,相当于更新
drop table xxx
create table xxxx
select * from table1 where yyy

有了一个个中间表后,好处是,你在检查数据的时候,只用写一行最简单的语句即可,如:

---查看数据
select * from xxx
---检查表格行数
select count(1) from xxx
---检查样本
select * from xxx where aaa = '', bbb='', ccc='' xxx

不用在原始语句上修改一堆嵌套的select语句。并且,这个操作仅仅是读表,不用重新运算,跑起来飞快!

6、join之后,肥了?瘦了?

肥瘦指join之后,行数变多还是变少。inner join取交集一般会导致数据变瘦,left join和union大部分情况下数据会变肥。

Combining Data - SQL Joins

每次进行join操作时,最好都看一下操作前后表的行数是否有变化,变多还是变少,是否符合预期。

---常用检查语句
---检查表行数,count(1)含义是对第一个字段计数
select count(1) from xxx
---去重检查
lect count_distinct(xx) from xxx
---根据某字段分组聚合查询
select count(xx) from xxx group by yyy

结语

数据分析最重要的是Get hands dirty,不上手摸一摸数据,根本不知道会遇到什么状况。最后感谢余总的大力扶持和悉心教导。

产品新人试用期PRD都这么写就牛逼了好产品

难用的运营工具不好的“红点” 不好的“注册"

手冲咖啡

扫码关注我的公众号:PathsVIVI

相关文章

  • 产品经理学SQL - 需要知道的6个好习惯

    引言 最近在做一项业务的数据分析,调用的数据超过了目前公司配置的ETL工具能处理的范围,被迫营业,又捡起了SQL。...

  • 产品经理学SQL

    SQL语言是用于访问和处理数据库的标准的计算机语言。 对产品经理来说,学会SQL会使提取数据更方便。我们几乎每天都...

  • 产品学习笔记,会持续更新的

    产品学习笔记 1 。 产品经理学习的书籍: 用户体验的要素,启示录,快速转行产品经...

  • PM玩心理 - 内控与外控

    认知心理学、社会心理学,可以说是产品设计中最常用到的心理学知识。本系列文章,试图结合心理学理论与产品案例,为产品经...

  • MySQL干货!21个写SQL的好习惯

    【导语】本文分SQL后悔药, SQL性能优化,SQL规范优雅三个方向,分享写SQL的21个好习惯~ 1. 写完SQ...

  • MySQL中,21个写SQL的好习惯

    1. 写完SQL先explain查看执行计划(SQL性能优化) 日常开发写SQL的时候,尽量养成这个好习惯呀:写完...

  • MySQL 如何正确的使用索引

    学习索引,主要是写出更快的sql,当我们写sql的时候,需要明确的知道sql为什么会走索引?为什么有些sql不走索...

  • 产品经理学SQL的正确姿势(一)

    起因 需求分析 基本概念 图一是excel表,图二是数据库的表,看出什么来了吗?表: 没错,其实excel的表和数...

  • 产品经理学SQL的正确姿势(二)

    以下所有的查询语句,符号都要用英文 基本查询和查询模型 还记得上篇最后的练习吗? 这就是最简单的查询,我们一起来分...

  • 《跟乐嘉学性格色彩》 读后感

    这是一本心理学方面的书,在我开始学交互设计的时候就知道需要学习心理学方面的知识,包括现在做产品,依然还是需要了解心...

网友评论

    本文标题:产品经理学SQL - 需要知道的6个好习惯

    本文链接:https://www.haomeiwen.com/subject/jxonoctx.html