力扣——数据库刷题记录

2022-7-13


    175. 组合两个表  left join on
    176. 第二高的薪水 limit 1,1  ifnull((查询结果),null)
    177. 第N高的薪水 limit N-1,1 order by '' desc
    178. 分数排名 dense_rank() over()  rank() over()

    1873.计算特殊奖金 mod("",2)  case when  then else end 
    627. case when "" then else end
    196. 多表查询

2022-7-15


1667.修复表中的名字 字符串操作 concat将字符串拼接  substr("string",index(从1开始),length(长度)) 字符串 大写upper() 小写lower()
1484.按照日期分组销售产品  group_concat 组拼接  去重计数 count(distinct 字段)
1527.患某种疾病的患者 模糊查询 like 'str%'
1965.丢失信息的雇员   union的使用(将两个查询进行合并)
1795.每个产品在不同商店的价格 union all(不去重)‘store1’as store 
608.树节点  case when 变量= 值 then when then else end 

2022-7-22  —— 合并
1581.进店却未进行过交易的顾客 
知识点:子查询  select  from where  group by order by

1148.文章浏览
知识点:去重distinct  升序 asc或者是order by 的默认

197.上升的温度
知识点:MySQL中,日期的差值使用 timestampdiff(unit, start, end)——unit可以是年year,month,day

607.销售员
知识点:多个子查询——抽丝剥茧一点一点解决
———————计算函数———————————
1141.查训近30天活跃用户数
知识点:  timestampdiff   函数解析

timestampdiff   函数解析:timestampdiff(unit, start, end)  unit可以是年year,month,day

举例:

timestampdiff(day,'2019-06-27', '2019-07-27')  = 30
timestampdiff(day,'2019-08-27', '2019-07-27')  = -31

此时如果 查询近30天的用户数,按照
timestampdiff(day,activity_date , '2019-07-27')  <= 30此时
是有bug的,因为从后面来的日期按照timestampdiff()计算也是小于30的
负数也小于30

1141:查训近30天活跃用户数

力扣——数据库刷题记录_第1张图片

请写SQL查询出截至 2019-07-27(包含2019-07-27),近 30 天的每日活跃用户数(当天只要有一条活动记录,即为活跃用户)。

以 任意顺序 返回结果表。

select
    activity_date as day, count(distinct user_id) as active_users 
from
    Activity
where
    timestampdiff(day,activity_date,'2019-07-27') < 30 and
 timestampdiff(day,activity_date,'2019-07-27') > 0 #为了把后面的日期屏蔽掉
group by
    activity_date

1693.每天的领导和合伙人

知识点:group by  x,y 联合分组 根据字段x,y同时分组

1729. 求关注者的数量

 知识点:常规知识

586.订单最多的客户

limit 0,1  一般与order by 结合使用,选取排序之后的第一条数据

511.游戏玩法分析

min(字段) 函数的使用

1890.2020年最后一次登录

知识点:如何判断一个日期的年份是‘2020’  使用year(date_time) = '2020'来判断

1741.查找每个员工花费的总时间

sum函数的使用以及 联合分组 group by x,y

你可能感兴趣的:(数据库,java,servlet)