暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

mysql工作常用的技能(四)

数据分析从0到1 2021-10-09
185

前言

上一章节说了对于mysql基础是最后一章,但是有的小伙伴反馈对常用的函数不了解,所以这一章节作为补充讲一下mysql常用的函数有哪些?


对于不了解工作中常用的mysql知识有哪些可以参考一下:


下面我们就来看看mysql工作中常用的函数有哪些吧!

常用时间类的函数

DATE() :

  • 说明:函数返回日期或日期/时间表达式的日期部分。

  • 常用在where条件过滤指定的时间,如date(create_time)。

now() :

  • 说明:获得当前日期时间。

  • 常用在标记脚本执行的时间/数据上传时间/时间差等。

DATE_FORMATdate,format):

  • 说明:函数用于对时间的显示进行格式化。

  • 常用在清洗数据中获取想要的时间格式。

  • 里面的%y表示2位数,%Y表示四位数。

SELECT now()
-- 输出:2021-10-05 16:03:52


SELECT date(now())
-- 输出:2021-10-05


SELECT DATE_FORMAT(Now(),'%Y/%m/%d')
-- 输出:2021/10/05
复制

str_to_date(str, format):

  • 说明:字符串转换为日期。

  • 常用于数据清洗,可以把一些杂乱无章的字符串转换为日期格式。

  • 注意str和format的格式顺序要一样,其中%y或者%Y都可以。

select str_to_date('08/09/08' , '%m/%d/%y')
-- 输出:2008-08-09
复制


makdedate(year,dayofyear):

  • 说明:拼凑日期、时间函数。

  • 常用于周期执行。


select makedate(2001,31); -- '2001-01-31'
select makedate(2001,32); -- '2001-02-01'
select maketime(12,15,30); -- '12:15:30'
复制


unix_timestamp()

  • 说明:将时间变为时间戳格式。

  • 可用数据时间差计算。

复制

from_unixtime()

  • 说明:将时间戳变为时间格式。

  • 多数用于清洗数据。

复制
select unix_timestamp(); -- 1218290027
select unix_timestamp('2008-08-08'); -- 1218124800
select unix_timestamp('2008-08-08 12:30:00'); -- 1218169800


select from_unixtime(1218290027); -- '2008-08-09 21:53:47'
select from_unixtime(1218124800); -- '2008-08-08 00:00:00'
select from_unixtime(1218169800); -- '2008-08-08 12:30:00'
复制


DATE_ADD():

  • 说明为日期增加一个时间间隔。

  • 常用于获取指定时间。

DATE_SUB():

  • 说明为日期减去一个时间间隔。 


---指定日期1秒后:
SELECT DATE_ADD('2010-12-31 23:59:59'INTERVAL 1 SECOND); -- 2011-01-01 00:00:00


-- 指定日期1天后:
  SELECT DATE_ADD('2010-12-31 23:59:59'INTERVAL 1 DAY); -- 2011-01-01 23:59:59
  
  -- 指定日期减去10小时:
  SELECT DATE_ADD('2011-01-01 00:00:00', INTERVAL '-10' DAY_HOUR) -- 2010-12-31 14:00:00
  
  -- 指定日期的一个月前:
  SELECT DATE_SUB('2011-01-02', INTERVAL 31 DAY); -- 2010-12-02
  
 --  指定日期的前一天:
 SELECT date_add('2011-01-01', INTERVAL -1 DAY); -- 2010-12-31
  
复制


datediff(date1,date2):

  • 说明日期、时间相减函数。

  • 常用于计算多次触发一个事件的最小间隔时间。


select datediff('2008-08-01', '2008-08-08'); -- -7
复制



常用聚合类的函数

COUNT(col) :

  •  说明统计查询结果的行数。

  •  常用count(distinct user_ID) 表示UV,用count(*) 表示PV。


MIN(col)  :

  •  说明查询指定列的最小值。


MAX(col):

  • 说明查询指定列的最大值。


SUM(col):

  • 说明求和,返回指定列的总和。


AVG(col):

  • 说明求平均值,返回指定列数据的平均值。

  • 但一定要确定好数据的范围,如果出现脏数据会造成“局部数据影响整体数据”

常用字符串类的函数

LENGTH(s):

  • 说明计算字符串长度函数,返回字符串的字节长度。


CONCAT(s1,s2...,sn):

  • 说明合并字符串函数,返回结果为连接参数产生的字符串,参数可以是一个或多个。

  • 连接语句中的字符如果有一个是NULL,则返回NULL。


TRIM(str):

  • 说明删除字符串左右两侧的空格。


replace(object,search,replace):

  • 说明字符串替换函数,返回替换后的新字符串。

  • 把object对象中出现的的search全部替换成replace。


SUBSTRING(str,start,len)

  • 说明截取字符串,返回从指定位置开始的指定长度的字符换。

  • start表示起始位置,len表示要截取的字符串长度,len是可选

  • mysql使用的是从1开始,不是从0开始。


REVERSE(str):

  • 说明返回颠倒字符串str的结果。


常用流程控制类的函数

IF(test,t,f):

  • 如果test是真,返回t;否则返回f


case when:

-- 简单函数
CASE case_value
WHEN when_value THEN statement_list
[WHEN when_value THEN statement_list] ...
[ELSE statement_list]
END CASE


-- 搜索函数
CASE
WHEN search_condition THEN statement_list
[WHEN search_condition THEN statement_list] ...
[ELSE statement_list]
END CASE
复制


假设需要对性别进行归类,性别1我们想显示男,2我们想显示女。


--- 简单函数
case `gender`
when 1 then '男'
when 2 then '女'
else '未知'
end


--- 搜索函数
case
when gender = 1 then '男'
when gender = 2 then '女'
else '未知'
end
复制
文章转载自数据分析从0到1,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论