
MySQL脸瘦(练手)题
文章平均质量分 64
记录MySQL题日记,一些思路啥的
CKL0g1c
道阻且长,行则将至
展开
-
MySQL练手 --- 1789. 员工的直属部门
题目链接:1789. 员工的直属部门这道题虽然是个简单题,但是"坑"倒是不少,所以记录一下思路:题目要干:一个员工可以属于多个部门。当一个员工加入超过一个部门的时候,他需要决定哪个部门是他的直属部门。请注意,当员工只加入一个部门的时候,那这个部门将默认为他的直属部门,虽然表记录的值为’N’.要求:查出员工所属的直属部门由题可知,两个过滤条件,一个是直属部门标识为Y(primary_flag = 'Y'),另一个是该员工只加入了一个部门(COUNT(employee_id) = 1)。又因为一个原创 2024-07-26 17:05:15 · 369 阅读 · 0 评论 -
MySQL练手 --- 1174. 即时食物配送 II
这个表达式是一个很有趣的用法,它的意思是统计order_date和两个字段相等的行数。是一个逻辑表达式,它会对每一行数据进行比较,如果order_date等于,则该表达式的值为1,否则为0。然后SUM()函数会将所有行的这个逻辑表达式的结果进行求和。也就是说,会统计出order_date和相等的行数。原创 2024-07-25 23:24:09 · 480 阅读 · 2 评论 -
MySQL练手 --- 1141. 查询近30天活跃用户数
然后再日期进行分组,计算用户id,这时需要对用户id进行去重,若不去重,则会出现以下结果。把在时间要求内的筛选出来,再进行 用户id 分组,最后统计用户个数(去重后的)),近 30 天的每日活跃用户数(当天只要有一条活动记录,即为活跃用户)提出问题,这两个mysql语句都可以执行成功,但两者一点问题都没有嘛?一个先过滤后分组,另一个先分组后过滤。借这个案例把里面的要点进行更进一步的阐述说明。)保证每个用户不相同(或者说重复出现)要计算日期之间的天数,这时就需要用到。所以需要对用户id进行去重处理(原创 2024-07-25 12:17:06 · 1360 阅读 · 0 评论 -
MySQL练手 --- 1633. 各赛事的用户注册率
返回的结果表按 percentage 的 降序 排序,若相同则按 contest_id 的 升序 排序。对赛事进行分组,然后分别对各赛事统计表名人数,最后除以总人数。然后将各赛事的人数除以总人数且用户注册百分率保留两位小数(题目要求:统计出各赛事的用户注册百分率,保留两位小数。得到总人数后,对各赛事的人数进行统计。用户表,该表存储着所有用户的。注册表,该表存储着赛事id(),和已报名的用户id(先求总人数,并给表别名为。,统计后的总人数的字段为。最后再加上排序即可(原创 2024-07-24 21:53:33 · 417 阅读 · 0 评论 -
MySQL练手 --- 1075. 项目员工 I
作为两张表的连接匹配字段,由于两张表都不为空,所以直接使用内连接(首先将两张表进行内连接,看看连接后的记录(结果)也是一道简单题,给了两张表一张项目表。)或者使用等价的语句(,就想到要用到分组(函数求平均工作年限(原创 2024-07-24 20:57:24 · 330 阅读 · 0 评论 -
MySQL练手 --- 619. 只出现一次的最大数字
这是一个简单题,只出现一次的最大数字,顾名思义,分两个阶段,第一个阶段筛选出只出现一次的数字,第二阶段在生成的新表中筛选出最大值即可。生成一张只出现一次的数字的表,表名记为num_table。再从num_table表中使用。函数筛选出最大值即可。原创 2024-07-24 20:01:26 · 467 阅读 · 0 评论 -
MySQL练手 --- 1251. 平均售价
有的产品定了价但没有卖出去,这种也得算出产品的平均售价。又因为,有的产品定了价但没有卖出去,这种也得算出产品的平均售价,所以最后使用。表含有价格还有价格的时间限制却没有产品出售的数量,表,表的连接关系为一对一,连接字段(匹配字段)为。出售过,很明显不符合常理,所以再增加过滤条件。然后就是对其进行分组,计算每种产品的平均售价。表含有产品出售的日期以及产品出售的数量。表连接起来,编写相应的过滤条件即可。为1的产品,定价为5,截止时间从。要求:查找每种产品的平均售价。题目要求:查找每种产品的平均售价。原创 2024-07-24 19:03:45 · 609 阅读 · 0 评论 -
MySQL练手 --- 1934. 确认率
消息的数量除以请求的确认消息的总数。没有请求任何确认消息的用户的确认率为 0。作为两个表的连接条件(匹配字段),使用左连接将两张表进行连接,然后添加过滤条件得到结果。考点(或用到的知识):能够对值进行四舍五入且处理小数点位数的。(左连接),确保每个用户都具有信息确认表的记录。信息确认表,表的关联关系为 一对一,且。:返回一个对x的值进行四舍五入后最接近。题目要求:用户的 确认率 是。由题可知,两个表,一个表为。的值,并保留到小数点后面。通过查看样例表可知,对于。然后对结果集进行分组,原创 2024-07-24 14:13:13 · 606 阅读 · 0 评论 -
MySQL练手 --- 570.至少有5名直接下属的经理
题目链接: 570.至少有5名直接下属的经理由题意可知,所有员工(不管普通员工还是经理)都在一张表中(),很显然,表的关联关系为 自我引用。这时首选 多表查询中的 JOIN 连接,然后添加过滤条件。题目要求:找出至少有五个直接下属的经理,首先利用匹配字段 进行连接(使用 就会筛选出经理)。连接类型选择左连接,为啥使用左连接呢?因为要弄出所有员工的信息,可是直接筛选出经理不好嘛?(有道理,其实直接用JOIN更好,而不是使用)查看结果记录表,总结出过滤条件,对进行分组(),然后判断的数量是否大于5(),额原创 2024-07-24 11:40:44 · 363 阅读 · 0 评论