10个SQL中常用的分析技巧

简介: 10个SQL中常用的分析技巧

1 SELECT all columns with LIMIT

一般,我们需要了解数据的大概,那么我们一般会选择前5行进行打印,看看具体内容包括哪些!SELECT 命令会选择所有的行、列,全部进行打印时,浪费时间、电脑内存,Limit命令可以查看数据中的前几行。


SELECT * FROM Customers LIMIT 3;



Limit在MySQL这种可以正常工作,在其他的SQL中可能需要使用TOP, FETCH FIRST ROWS ONLY


2 WHERE clause

WHERE可以对特定列的值进行过滤。例如,我们过滤来自西班牙的国家,并且返回对应的城市。


SELECT City

FROM Customers

WHERE Country = "Spain";



我们也可以对城市进行 Unique:


SELECT DISTINCT City

FROM Customers

WHERE Country = "Spain";



3 GROUP BY and HAVING clause


当我们想要对数据中相同观测值进行分组时,我们可以使用 GROUP BY, HAVING 可以用来过滤加总的数据,常用的包括 sum、count。


HAVING 用来处理加总数据,而WHERE用来处理非加总数据。


我们有世界各国的数据,想要输出人口大于500,000,000的洲:


SELECT continent, SUM(population)

FROM world

GROUP BY continent

HAVING SUM(population)>500000000.  --filter the aggregated values




4 Order By clause

Order By 将数据按照选择的列进行升序或者排列:


将选择的数据按照人口降序排列:


SELECT name, population

FROM world

WHERE population > 200000000

ORDER BY population DESC;




5 Date Function

时间处理函数依赖于SQL的内核,不同SQL的时间处理函数有所差异,DATEPART 可以提取时间中的年月日。


提取时间中的年、月:


SELECT whn,

DATEPART(YEAR, whn) AS yr,

DATEPART(MONTH, whn) AS mnth

FROM eclipse




6 Joins

Joins 包括笛卡尔积、内积、外积、Self Join,接下来我们将介绍 Inner、left join 和 right join 。





inner


inner 可以输出两个表或者更多表中共同的行,类似数学中的韦恩图,取两个集合的交集。


当我们取两个集合共同id, 并且仅仅输出前五行:


SELECT Orders.OrderID, Customers.CustomerName

FROM Orders

INNER JOIN Customers

ON Orders.CustomerID = Customers.CustomerID

LIMIT 5;







left join


left join 仅仅输出左边表中的所有行,输出结果中右边表不存在的值为Null。


左连表, 按照 Customers.CustomerName进行升序排列:


SELECT Customers.CustomerName, Orders.OrderID

FROM Customers

LEFT JOIN Orders

ON Customers.CustomerID=Orders.CustomerID

ORDER BY Customers.CustomerName

LIMIT 5;




right join


右连表与左连表相反,返回右表中的所有行,左表不存在的行将填充Null值。


SELECT Orders.OrderID, Employees.LastName, Employees.FirstName

FROM Orders

RIGHT JOIN Employees

ON Orders.EmployeeID = Employees.EmployeeID

ORDER BY Orders.OrderID;


相关文章
|
3月前
|
SQL 存储 缓存
四、SQL语句执行过程分析
四、SQL语句执行过程分析
34 0
|
16天前
|
SQL 数据库 索引
SQL索引失效原因分析与解决方案
SQL索引失效原因分析与解决方案
22 0
|
24天前
|
SQL 关系型数据库 MySQL
【MySQL】慢SQL分析流程
【4月更文挑战第1天】【MySQL】慢SQL分析流程
|
2月前
|
SQL 存储 关系型数据库
MySQL(终结篇二)- SQL 语句分析与优化
MySQL(终结篇二)- SQL 语句分析与优化
87 0
|
3月前
|
SQL
leetcode-SQL-550. 游戏玩法分析 IV
leetcode-SQL-550. 游戏玩法分析 IV
22 1
|
3月前
|
SQL
leetcode-SQL-1084. 销售分析III
leetcode-SQL-1084. 销售分析III
30 0
|
3月前
|
SQL
leetcode-SQL-1158. 市场分析 I
leetcode-SQL-1158. 市场分析 I
19 1
|
3月前
|
SQL
leetcode-SQL-511. 游戏玩法分析 I
leetcode-SQL-511. 游戏玩法分析 I
22 0
|
3月前
|
SQL 数据挖掘 数据处理
「SQL面试题库」 No_71 市场分析 II
「SQL面试题库」 No_71 市场分析 II
|
3月前
|
SQL 数据挖掘 数据处理
「SQL面试题库」 No_70 市场分析 I
「SQL面试题库」 No_70 市场分析 I