MYSQL 连接
- MYSQL 连接 推荐度:
- 相关推荐
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
最新文章
- 如何解决电脑通电自动开机的问题
- 飞天使
- 振南技术干货集:深入浅出的Bootloader(1)
- 【OpenHarmony内核】Harmony内核之定时器
- 微信等图标显示白色或异常颜色
- java中try...catch...finally相关的说明
- 0基础学习VR全景平台篇第121篇:认识视频剪辑软件Premiere
- hadoop 大数据环境配置 rsync命令 hadoop(三)
- 加解密算法相关技术详解
- 解决谷歌浏览器卸载后重装失败谷歌浏览器无法更新
- DTC Network旗下代币DSTC大蒜头即将上线,市场热度飙升
- 记录pytorch实现自定义算子并转onnx文件输出
- 【SpringBoot】SpringBoot自动配置底层源码解析
- QML16、从 C++ 定义 QML 类型
- C++与多态
- Oracle简单高效删除重复记录
- GoldWave 6.78中文免费激活版功能特色2024最新功能解析