美文网首页数据分析常用SQL技巧
数据分析技巧:MySQL常用查询语法(持续更新中)

数据分析技巧:MySQL常用查询语法(持续更新中)

作者: 马淑 | 来源:发表于2018-10-30 11:13 被阅读67次

Part I. 简单关键字

1.只查询前100条数据

select * from order LIMIT 100

2.只查询从前100到900的数据

select * from order LIMIT 100,800

3.查询特点列去重后的数据

select DISTINCT user_id from order

4.查询特点列去重后的样本数

select COUNT(DISTINCT user_id) from order

5. 查询特定条件值在某个值域范围内的数据

select * from order where status in ('Removed', 'No_Pending_Action','Pending_Order_Confirm')

6. 查询以‘103’开头且包含‘04’的数据

select * from order where user_id LIKE '103%' and order_id LIKE '%04%'

7. 金额在10~100之间的所有数据按订单ID倒序排列

select * from order when 10<total_amount<100 ORDER BY order_id DESC

8. 查询指定列中不包含空值的所有数据

select * from order where order_id IS NOT NULL
备注:NULL 不代表空值、空字符串或空格,而是真正意义上的没有数据。一般数据库会在创建时设定默认值,来避免空值出现。

Part II. 聚合函数

9. 使用聚合函数求算术平均值、计数、最大/小值、做分类统计等

select AVG(column_name) from table_name
select COUNT(column_name) from table_name 备注:NULL值不计入
select COUNT(*) from table_name
select MAX(price) as Max_Price from table_name
select MIN(price) as Min_Price from table_name

有Order表和Shipper表,Order表中有shipper_id列外连接到Shipper表中的id列,统计每个Shipper所接到的订单数

select Shippers.name, COUNT(Orders_id) as ord_sum from Orders 
LEFT JOIN Shippers 
ON Order.shipper_id = Shippers.id

Part III. 数学函数

10.使用MySQL数学函数求绝对值、对数、平方根等
ABS(X)         返回绝对值      ROUND(X)      四舍五入取整
FLOOR(X)         向下取整      CEILING(X)    向上取整

select 5 DIV 2 -->2  整除

LOG(X),LOG(B,X)   返回对数      POW(X,Y)    返回X的Y次方        SQRT(X)   返回X开Y次方

Part IV. 字符串函数

select CONCAT('11','22','33')
>112233
select CONCAT('11','22',NULL)
>NULL
select CONCAT_WS(',','11','22','33')
>11,22,33
select CONCAT_WS(',','11','22',NULL)
>11,22

select name from table_name where name REGEXP '^[aeiou]|ok$'
>查找以元音字母开头或者以'OK'结尾的所有记录

select SUBSTR(path,1,LOCATE('.',path)) from table_name
>path列左边第1位置起,到小数点前的字符串
select SUBSTRING(content,5,200) as abstract from table_name
>content列左边第5位置起,取200长度的字符串作为摘要
SUBSTR(string,pos,len)SUBSTRING(string,pos,len)在MySQL中都可以,如下所示:

SUBSTR和SUBSTRING

Part V. 日期函数

1. 日期±时间间隔

DATE_ADD(date, INTERVAL 45 DAYS)>date往后推45天
DATE_SUB(date, INTERVAL 45 DAYS)>date往前推45天

2. 计算时间间隔

DATEDIFF('2008-11-30','2008-11-29')>第一个日期减去第二个日期得到的天数,可正可负

3. 格式化日期

DATE_FORMAT(NOW(),'%m-%d-%Y')>10-30-2018
NOW(),CURDATE(),CURTIME(),DATE(NOW())对应形式如下表:

日期函数
4. 截取日期的年月日季时分秒

EXTRACT(YEAR_MONTH FROM ORDERDATE)>取年月,可以用来做分组统计

EXTRACT日期截取函数
5. 日期处理函数to_days()和from_days()

select to_days('1997-10-07'), from_days(729669)>取天数,可以用来by day做分组统计,还可以根据当前时刻筛选获取到前1天,前2天,...,前X天的数据

to_days() & from_days

相关文章

网友评论

    本文标题:数据分析技巧:MySQL常用查询语法(持续更新中)

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