一,前言
数据分析基本的代码能力是对SQL的使用,下面对业务中实际用到的语法和函数进行学习及总结。
二,常用关键字与函数
SQL的书写规范:语句中出现的所有表名、字段名全部小写,系统保留字、内置函数名、SQL保留字大写(SQL本身不区分大小写,大写可能是为了增加可读性?)
SQL注释:
MySQL——1,单行注释使用“#”或者“-- ”(第二种方法后有一个空格)2,多行注释使用“/* */”
Oracle——1,单行注释使用“--”2,多行注释使用使用“/* */”
SQL关键字与函数:
AS——别名关键字,用来给之前的关系取一个更直观或者“中文”的名字来表示
列的别名:
SELECT column_name AS alias_name
FROM table_name;
表的别名:
SELECT column_name(s)
FROM table_name AS alias_name;
表别名的用途是为了让SQL更短,例如:
SELECT w.name, w.url, a.count, a.date
FROM Websites AS w, access_log AS a
WHERE a.site_id=w.id and w.name="XX网站";
此处表别名的AS时常省去,变为
SELECT w.name, w.url, a.count, a.date
FROM Websites w, access_log a
WHERE a.site_id=w.id and w.name="XX网站";
DISTINCT——去重关键字
能够作用于单列或者多列
SELECT DISTINCT column_name,column_name
FROM table_name;
COUNT——函数返回指定条件的行的数目
SELECT COUNT(column_name) FROM table_name;
当COUNT与DISTINCT结合使用时:
SELECT COUNT(DISTINCT column_name) FROM table_name
表示对这一列不重复的行进行计数
GROUP BY——分组函数
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;
GROUP BY结合一些聚合函数对一个或多个列的结果集合进行分组
LIKE——该操作符用于在WHERE子句中,搜索列中的指定模式
SELECT column_name(s)
FROM table_name
WHERE column_name LIKE pattern;
LIKE配合“通配符”能够完成匹配指定的字符
通配符——“%”代替0个或多个字符;“_”替代一个字符
例子:“A%”表示以A开头的所有字符,“%AA%”表示包含“AA”的所有字符
JOIN——用来把两个或多个表根据某些相同字段,结合起来
JOIN有多种不同的利用,例如“LEFT JOIN”、“INNER JOIN”等
例如“INNER JOIN”,是最常用的JOIN方式,用来获取不同表满足条件的部分,即获得交集
SELECT column_name(s)
FROM table_name1
INNER JOIN table_name2
ON table_name1.column_name=table_name2.column_name;
其他JOIN:
LEFT JOIN:即使右表中没有,也从左表中返回所有行
RIGHT JOIN:即使左表中没有,也从右表返回所有行
FULL JOIN:只要其中一个表存在匹配,则返回行
CASE WHEN——用于分类统计
--简单CASE函数
CASE sex
WHEN '1' THEN '男'
WHEN '0' THEN '女'
ELSE '其他' END
--CASE搜索函数
CASE WHEN sex = '1' THEN '男'
WHEN sex = '0' THEN '女'
ELSE '其他' END
这里,END后可以直接加别名,不用AS
OVER()——开窗函数,同聚合函数一样,也基于组对行进行某种函数操作,不同的是聚合函数每组返回一行,而开窗函数返回的多个行。常见用法:
ROW_NUMBER() OVER(PARTITION BY column_name ORDER BY column_name)
来组成分析函数,完成复杂报表的统计需求。(后续还需要再开一篇专门学习各种分析函数,进一步对复杂的统计表达方法进行学习)
最后,值得注意的是,SQL的语法顺序和执行顺序是不同的。
SQL的语法顺序:
SELECT——FROM——WHERE——GROUP BY——HAVING——UNION——ORDER BY
执行顺序:
FROM——WHERE——GROUP BY——HAVING——SELECT——DISTINCT——UNION——ORDER BY