学习目标:
每天2-3到简单sql(刷完即止),每天复习代码随想录上的题目3道算法(时间充足可以继续),今天的八股背少一点,MySQL和Redis各1-2道好了,主攻复习是java基础
今日碎碎念:
1)今天刷SQL以及复习Java基础,就不写算法了,另外就是复习之前的八股
力扣刷题
SQL
力扣1873:1873. 计算特殊奖金
解答思路:
1)本题练习的主要是如何使用正则表达式以及在查询中使用If,当然,也可以使用模糊查询和取余都是可以的
# 计算每个雇员的奖金。如果一个雇员的 id 是 奇数 并且他的名字不是以 'M' 开头
# 那么他的奖金是他工资的 100% ,否则奖金为 0
select employee_id,IF(employee_id % 2 = 1 AND name NOT REGEXP '^M', salary, 0) as bonusfrom Employeesorder by employee_id
这里直接粘上评论区的代码了
selectemployee_id,if(employee_id%2=1 and name not like 'M%',salary,0) as bonus
from employees
order by employee_id;作者:随遇而安
链接:https://leetcode.cn/problems/calculate-special-bonus/solutions/2051411/by-sui-yu-er-an-xw-2tpr/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
还有就是可以使用MOD函数
Mod(a,b) 在sql中的意思是 a % b
Mod基础用法:如果id需要是偶数或者奇数时就可以使用mod。
mod(id,2)=1 是指id是奇数。
mod(id,2)=0 是指id是偶数。
力扣1667:1667. 修复表中的名字
解答思路:
1)本题练习到基础函数的使用,同时也是一道练习自连接的好题目
2)限制精度到小数点后几位,我也记录了好几道题了,就是使用round即可
# 数据都在同一列,我们无法进行计算,因此要想办法让需要的数据体现在一行
# 因此得自连接
select a1.machine_id,round(avg(a2.timestamp - a1.timestamp),3) as processing_timefrom Activity as a1 join Activity as a2ona1.machine_id=a2.machine_id and a1.process_id=a2.process_id anda1.activity_type ='start' and a2.activity_type ='end' group by machine_id