1.Limit后面跟两个参数时:第一表示跳过的数量,第二表示要取得数量。Limit1,3(取2,3,4)
Limit后表示要取数量,offset后表示跳过数量。Limit 3 offset 1;
2.窗口函数:记录集合,在满足某种条件记录集合上执行的特殊函数。
rank() over()排名,相同的两名并列,下一位空出所占名次:1,2,2,4
Dense_rank()over(),相同的两名并列,下一位不空出所占名次:1,2,2,3
Row_number()over(),不考虑并列,进行连续排名
Eg:Dense_rank()over(order by salary desc nulls last)
Datediff(dd,rddate,getdate())==0返回以日为单位,和当前getdate相差为0的日期。
连续登陆问题:
1)去重。Select distinct date(logon_time)as time,user_id from 表;
2)登录时间排序。
Select user_id,logon_time,row_number()over(partition by user_id order by logon_time)as sort
From
(
Select distinct date(logon_time)as time,user_id from 表
)temp_0;
3)判断是否连续,使用date_sub()函数
Select ,date_sub(logon_time,interval sort day) as result from
(
Select user_id,logon_time,row_number()over(partition by user_id order by logon_time)as sort
From(Select distinct date(logon_time)as time,user_id from 表) temp_0
)temp_1;
4)以user_id,result分组求和
Select user_id,count()from
(
Select ,date_sub(logon_time,interval sort day) as result from
(
Select user_id,logon_time,row_number()over(partition by user_id order by logon_time)as sort
From(
Select distinct date(logon_time)as time,user_id from 表
) temp_0
)temp_1
)temp_2
Group by id,result having count()>=1;
数据库中的三种删除方法以及区别
Delete:删除数据表中的行
Truncate:快速,无日志记录的方法,是用更少的系统资源和事物日志资源,与不含where子句的delete在功能上相同。
Drop:删除数据表、数据库、数据表字段。
事务的ACID特性:
事务是恢复和并发控制的基本单位
原子性:事务所有操作要么全部成功,要么全部失败回滚
一致性:事物使数据库从一个一致性状态变换到另一个一致性状态
隔离性:不能被其他事务干扰,多个并发事务之间要相互隔离
持续性:一个事务一旦提交,对数据的改变是永久性的,不会丢失提交事务的操作事物日志资源.
count(星),count(1),count(列)区别:
Count(*星):包括所有列,相当于行
Count(1):忽略所有列,用1代表代码行
Count():忽略列值为0,某个字段为null
列名为主键:count(列)>count(星)
多个列无主键:count(1)>count(星),两者区别不大
只有一个字段:count(*星)最优
sql语言补充
最新推荐文章于 2022-11-29 15:22:32 发布