当前位置: 首页 > news >正文

MYSQL 连接

高频 SQL 50 题(基础版) - 学习计划 - 力扣(LeetCode)全球极客挚爱的技术成长平台

1378. 使用唯一标识码替换员工ID

SELECT COALESCE(unique_id, NULL) AS unique_id,name
FROM Employees
LEFT JOIN EmployeeUNI ON  Employees.id = EmployeeUNI.id;

左连接(Left Join)是一种用于联接两个或多个表的操作,它返回左表中的所有行以及与右表中满足联接条件的匹配行。如果右表中没有与左表匹配的行,则对应的结果列将填充为 NULL 值。

左连接的语法如下:

SELECT 列名
FROM 左表
LEFT JOIN 右表 ON 连接条件;

1068. 产品销售分析 I

SELECT P.product_name,year,price
FROM Sales S
LEFT JOIN  Product P ON P.product_id = S.product_id;

1581. 进店却未进行过交易的顾客

SELECT customer_id,COUNT(customer_id) AS count_no_trans
FROM Visits V
LEFT JOIN Transactions T ON T.visit_id = V.visit_id 
WHERE transaction_id IS NULL
GROUP BY customer_id

197. 上升的温度

TIMESTAMPDIFF函数,小的日期前面

类似笛卡尔积的做法

SELECT w1.id Id
FROM Weather AS w1,Weather AS w2
WHERE TIMESTAMPDIFF(DAY,w2.RecordDate,w1.RecordDate) = 1 AND w1.Temperature > w2.Temperature;

DATE_ADD(w2.RecordDate, INTERVAL 1 DAY)是一个日期函数,在给定的日期上添加指定的时

如果w2.RecordDate的值是'2023-10-17',那么DATE_ADD(w2.RecordDate, INTERVAL 1 DAY)将返回'2023-10-18'。

连接后的表如下(左w1,右w2):

 

SELECT w1.id Id
FROM Weather w1
LEFT JOIN(SELECT RecordDate,TemperatureFROM Weather
)w2
ON w1.RecordDate = DATE_ADD(w2.RecordDate,INTERVAL 1 day)
WHERE w1.Temperature > w2.Temperature

1661. 每台机器的进程平均运行时间

子查询的表如下

 SUM(time):算出来总运行时间

(COUNT(*)/2):一个进程包括start和end两个时间戳,所以要除以2

SELECT machine_id,ROUND(SUM(time)/(COUNT(*)/2),3) processing_time
FROM (SELECT machine_id,process_id,IF(activity_type = 'start', round(-`timestamp`, 3), round(`timestamp` , 3)) timeFROM Activity 
)t
GROUP BY machine_id;

577. 员工奖金

SELECT name,bonus
FROM (SELECT name,bonusFROM Employee ELEFT JOIN Bonus B ON E.empId = B.empId
) t
WHERE bonus < '1000' OR bonus IS NULL;

1280. 学生们参加各科测试的次数

    SELECT student_id, subject_name, COUNT(*) AS attended_examsFROM ExaminationsGROUP BY student_id, subject_name

直接统计Examinations表

SELECT *
FROMStudents s
CROSS JOINSubjects sub

用交叉连接CORSS JOIN将两张表连接

把成绩表左连接到做了自然连接的表,保证每个学生各门课字段都在,不会因为没参加考试就不算

SELECT stu.student_id,stu.student_name,s.subject_name,IFNULL(grouped.attended_exams,0) AS attended_exams
FROM Students stu 
CROSS JOIN Subjects s 
LEFT JOIN(SELECT student_id, subject_name, COUNT(*) AS attended_examsFROM ExaminationsGROUP BY student_id, subject_name
)grouped
ON grouped.student_id = stu.student_id AND grouped.subject_name = s.subject_name
ORDER BY stu.student_id,s.subject_name

570. 至少有5名直接下属的经理

SELECT name
FROM Employee
WHERE id IN (SELECT managerIdFROM EmployeeGROUP BY managerId HAVING COUNT(*) >= 5
) 

1934. 确认率

SELECT sign.user_id,IFNULL(ROUND(hit/total,2),0.00) confirmation_rate
FROM Signups sign
LEFT JOIN(SELECT user_id,time_stamp,COUNT(action) totalFROM ConfirmationsGROUP BY user_id 
)grouped 
ON grouped.user_id = sign.user_id
LEFT JOIN(SELECT user_id,COUNT(action) hitFROM ConfirmationsWHERE action = 'confirmed'GROUP BY user_id 
)hitcount
ON hitcount.user_id = sign.user_id

 

http://www.lryc.cn/news/197368.html

相关文章:

  • SeaTunnel 换maven源,解决插件下载慢
  • 安卓14通过“冻结”缓存应用程序腾出CPU,提高性能和内存效率
  • jupyter崩溃OOM,out of memory,jupyter代码写不进去,保存不了。
  • 一文带你快速掌握爬虫开发中的一些高级调试技巧
  • 6.(vue3.x+vite)路由传参query与params区别
  • C++string的使用
  • 闲着也是闲着,自己写歌东西玩一玩,碰碰脑子,简单快乐一点,双人出数的小游戏,后续还带补充
  • 牛客网 -- WY28 跳石板
  • [正式学习java③]——字符串在内存中的存储方式、为什么字符串不可变、字符串的拼接原理,键盘录入的小细节。
  • 行情分析——加密货币市场大盘走势(10.18)
  • 高并发场景下常见的限流算法及方案介绍
  • 虹科分享 | 选择SAS还是NVMe?虹科网络基础带您一探究竟!
  • 在ERP管理系统中,库存管理的基本流程是什么?
  • Ruby 之 csv 文件读写
  • Android AMS——进程LRU列表更新(十七)
  • 【数据可视化】—大屏数据可视化展示
  • 计算机算法分析与设计(12)---贪心算法(最优装载问题和哈夫曼编码问题)
  • 打造属于自己的vue图标库
  • C++11线程池
  • 企业打造VR虚拟展厅,开启商务洽谈新时代!
  • linux部署gitlab
  • c++_learning-基础部分
  • 支持PC端、手机端、数据大屏端的Spring Cloud智慧工地云平台源码
  • 给cmd控制台程序 套壳 美化
  • 【系统架构设计】架构核心知识: 1 构件和中间件
  • 通过开发者工具-网络排查响应时间过长的问题
  • 【Python】Python 实现 Excel 到 CSV 的转换程序
  • BUUCTF题解之[极客大挑战 2019]Havefun 1
  • DIV+CSS网页布局
  • python二次开发CATIA:CATIA Automation