mysql练习记录

查询基础

1.distinct:主要用于去重
2.order by:主要用于排序,默认是升序,desc降序
3.limit,offset:配合order by使用,limit表示截取多长,offset表示从哪里开始截,比如limit 4 offset 2,表示从第三个开始截取,截取4个
4.round(num,2)表示将num保留小数点后两位
5.ifnull(num,0)如果num是空,表示为0

SET运算符

在这里插入图片描述

一些经典问题

1.行转列问题
在这里插入图片描述
2.判断的写法
在这里插入图片描述
3.比较日期的值使用DATEDIFF
在这里插入图片描述
4.mysql中如何排名
举例:

select  a.s_id,a.c_id,
		@i:=@i+1 as i保留排名(依次排名,不考虑并列),
		@k:=(case when @score=a.s_score then @k else @i end) 
		as rank不保留排名(存在并列),
		@score:=a.s_score as score
		from (select s_id,c_id,s_score from score 
		      GROUP BY s_id,c_id,s_score ORDER BY s_score desc)a,
             (select @k:=0,@i:=0,@score:=0)s

5.oracle数据库排名
举例:

select
    s_id 
   ,score
   ,rank() over(order by score desc) rank               --按照成绩排名,纯排名
   ,dense_rank() over(order by score desc) dense_rank   --按照成绩排名,相同成绩排名一致
   ,row_number() over(order by score desc) row_number   --按照成绩依次排名
   ,ntile(3) over (order by score desc) group_s         --按照分数划分成绩梯队
from s_score;

结果:
在这里插入图片描述
6.mysql日期处理

select s_birth,(DATE_FORMAT(NOW(),'%Y')-DATE_FORMAT(s_birth,'%Y') - 
				(case when DATE_FORMAT(NOW(),'%m%d')>DATE_FORMAT(s_birth,'%m%d') then 0 else 1 end)) as age
		from student;

DATE_FORMAT(NOW(),’%Y’),取出年份
DATE_FORMAT(NOW(),’%m%d’),取出月份和日期
WEEK(DATE_FORMAT(NOW(),’%Y%m%d’)),计算第几周
MONTH(DATE_FORMAT(NOW(),’%Y%m%d’)),计算第几个月

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值