![fdf0c5a6818ae8879ea9cf047b803e42.png](https://i-blog.csdnimg.cn/blog_migrate/eb9ef8fb00839f9e53a461cff873d4f6.jpeg)
文/PM 稳稳Jayden
配图/伦敦眼 Pixabay
【全文目录】
1 写在前面
2 SQL语句回顾
3 小结
1 写在前面
SQL作为PM必备技能之一,是产品经理分析数据的基础手段。然而当实际应用时,却往往又仿佛茫然四顾、无从下手。
究其根本,一方面是不知道如何查询公司部门所使用的表名&表字段,另一方面则是对于Hive里有些SQL语句总是不会写。
此时,选择分而治之的方案显得极为重要:
对于不知公司表名与表字段的情况,可向同事或者合作伙伴寻求帮助,切记最好一次性将所有表问题都罗列出来,尽量避免二次询问,毕竟难免尴尬;
对于第二种SQL语句的编写,就要靠自身的知识积累与编写SQL时的应变能力。
话不多说,步入正题。
2 SQL语句回顾
以下作者将SQL各类常用代码一一枚举,供未来直接索引,以备不时之需。(SQL不区分大小写)
栗子:
![66fd83146181a77d61a2c5ee01fe3430.png](https://i-blog.csdnimg.cn/blog_migrate/fe3b8aef93c85411036048968b746f6e.png)
1)查询表内的某字段——最基础的语句格式
SELECT empno, ename FROM t_employee;
其中empno, ename是按照顺序将该两列属性铺展出来;「*」为全部选择。
2)避免重复数据查询——DISTINCT
SELECT DISTINCT job FROM t_employ;
DISTINCT可将job属性中想通的属性合并,如1 3 3 5 7,只会展示1 3 5 7 ;若同时选择两列,则会将两列一一对应穷举;如:
SELECT DISTINCT ename, job FROM t_employ;
3)SQL支持四则运算数据查询
SELECT ename ,sal * 12 FROM t_employ;
其中sal * 12表示年薪,若其后跟上yearsalary则会将「yearsalary」作为列属性的标题;
SELECT ename, sal * 12 yearsalary FROM t_employ;
4)条件数据查询,关键字WHERE
SELECT ename FROM t_employ WHERE job = 'CLERK';
SELECT ename FROM t_emoloy WHERE job = 'CLERK'&& sal >800;
5)带BETWEEN AND关键字的范围查询:
SELECT ename FROM t_emoploy WHERE sal BETWEEN 1000 AND 2000;
SELECT ename FROM t_emoploy WHERE sal NOT BETWEEN 1000 AND 2000;
6)空值、空字符串与0是有区别的,空值由IS NULL判断
SELECT ename FROM t_employ WHERE sal IS (NOT) NULL;
7)带IN关键字的集合查询
SELECT ename FROM t_employ WHERE empno = 7521 or empno = 7782;
SELECT ename FROM t_employ WHERE empno (NOT) IN (7521,7782,NULL);
8)带LIKE关键字的模糊查询,LIKE前面均可接NOT表示否定
SELECT ename FROM t_employ WHERE ename LIKE 'A%';
查询ename字段中以字母A开头的数据记录;
SELECT ename FROM t_employ WHERE ename LIKE '_A%';
查询ename字段中第二个字母是A的数据记录;
SELECT ename FROM t_employ WHERE ename LIKE 'A%';
查询ename字段中没有字母A的记录;
9)ORDER BY的排序记录:
SELECT * FROM t_emoploy ORDER BY sal ASC(DESC);
按照sal进行升序(降序)排列,默认为升序;
还可先按照升序排列,对于升序中数值一样的,其他字段可设置为降序排列;
SELECT * FROM t_employ ORDER BY sal ,
hiredate DESC;
10)LIMIT关键字查询
SELECT * FROM t_employ WHERE comn is NULL
LIMIT 3;
限制字段comn为3条,将所有结果展示出来;
SELECT * FROM t_employ WHERE comn is NULL
LIMIT 0,,3;
限制字段comn为3条,从第1条开始,将所有结果展示出来
11)COUNT函数使用
SELECT COUNT(comn) number FROM t_employ WHERE NOT comn = 0;
统计奖金数(字段comn)值不为0的所有值;
其他函数还有AVG(平均数)、SUM(求和)、MAX/MIN等;
3 小结
以上列举了11种常见情况的SQL语句,通过排列组合能够覆盖到大多数场景的SQL查询。但这只是SQL最基础的一些功能,对于某些页面埋点,某些复杂查询而言,仍旧难以满足;
但产品的能力矩阵即是如此,并非要在所有领域做到前1%,在非核心领域能够及格即可,能够满足日常使用即可;
但倘若是核心竞争力方面,如产品的业务逻辑、产品的思维逻辑、产品的系统逻辑就必须形成自己的一套体系。相当于是自己修炼的一套武功,肌肉记忆出手成招,甚至是形成自己的非条件反射。对于任何一个需求不仅能滴水不漏考虑周全,同时能权衡各方面的体验感受,甚至能够一眼观至产品未来。
这才是产品的进阶之道。
以上,
祝好。
附上一张最近十分喜爱的一张壁纸:
![97aa7498538402e7f50aca456dd1655f.png](https://i-blog.csdnimg.cn/blog_migrate/d96070a7f7226f2e37987fe841badf00.jpeg)