单表查询-函数

mysql有四种函数

  1. 单行函数
  2. 多行函数
  3. 流程函数
  4. 窗口函数

单行函数

1.1 数值函数

-- 取绝对值
abs(-98)  #98

-- 向上取整
ceil(9.00004)  #10

-- 向下取整   
floor(9.00001)  #9

-- 四舍五入
round(9.66414172,2)  #9.76

1.2 字符串函数

upper 将字母转化为大写

upper('gjjg')   #GJJG

lower 将字母转化为小写

lower('GHjl')   #ghjl

length 计算字节长度

length('fjhhjkv')   #7

substring 截取部分字符串

string('ahigjg',2,4)   #higj
-- string(要截取的字符串,从第几个字符开始截取,截取多少个字符)

concat 字符串拼接

concat('aa','hh','kk')   #aahhkk
-- concat可以添加多个字符串

1.3 日期与时间函数

-- curdate()年月日  current date
SELECT curdate()

-- curtime()时分秒	current time
SELECT curtime()

-- now()年月日时分秒 当前语句执行的时间
SELECT now()

-- sysdate()年月日时分秒 当前函数执行的时间
SELECT sysdate()
-- sleep()表示暂停,括号内写数值,单位为秒
select sleep(3)

-- date_format(date, "%Y-%m-%d") h i s 时分秒,将日期改为自己想要的类型
date_format(date,'%y-%m')

-- date_add(date, interval expr type) 原时间加一个日期
-- expr 数值  type 时间类型
date_add(date,interval 7 day)

-- date_sub(date, interval expr type) 原时间减一个日期
-- expr 数值  type 时间类型
date_sub(date,interval 2 month)

-- datediff(date1, date2) 两日期之间相隔天数
-- 计算方式:date1-date2
datediff(now(),date2)

多行函数

多行函数有5个,max()最大值,min()最小值,count()计数,sum()求和,avg()平均数

count(*),count(1)的结果是一样的

如果非要对某一类的非空值/某一类型进行计数,可以用count(if(判断条件,1,null))

流程函数

条件判断函数

1. if分支结构

if(判断条件,条件成立结果,条件不成立结果)

2. case多分支结构

-- 判断内容为区间时
select * ,
case
    when 播放量>10000 then '还不错'
    when 播放量>5000 then '一般'
    else '不行'
end 评价
from 表;

-- 判断内容为等值时
select *,
case 类型
    when '火锅' then '喜欢'
    when '甜品' then '最爱'
    when '小吃' then '一般'
else '不喜欢'
end 喜爱度
from 表;

窗口函数

<窗口函数> over( partition by <用于分组的列名> order by<用于排序的列名>)

rank函数:如果有并列名词的行,会占用下一次名词的位置,正常是1,2,3,4,rank函数是1,1,3,4,4,6

SELECT *,        
rank() over(
	partition by cid
	order by score desc
	) rabking
	from sc;

dense_rank函数:如果有并列名次的行,不占用下一名次的位置。比如正常排名是1,2,3,4,但是现在前3名是并列的名次,结果是:1,1,1,2,3

SELECT *,           
dense_rank() over(
	partition by cid
	order by score desc
	) rabking
	from sc;

row_number函数:不考虑并列名次的情况。排名按顺次递增

SELECT *,						
ROW_NUMBER() over(
	partition by cid
	order by score desc
	) rabking
	from sc;

         

scorerankdense_rankrow_number
100111
100112
100113
95424

聚合函数作窗口函数

聚合函数作为窗口函数时,()括号里要填入参数

SELECT *,
sum(score) over(
 partition by sid
 order by score
 ) as 排名
 from sc;

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值