ToB企服应用市场:ToB评测及商务社交产业平台
标题:
高频 SQL 50 题(基础版)连接部门
[打印本页]
作者:
乌市泽哥
时间:
2024-11-13 20:43
标题:
高频 SQL 50 题(基础版)连接部门
1、使用唯一标识码更换员工ID
# Write your MySQL query statement below
SELECT
b.unique_id, a.name
FROM
Employees as a
LEFT JOIN
EmployeeUNI as b
ON
a.id = b.id;
复制代码
2、产品贩卖分析 I
# Write your MySQL query statement below
SELECT
p.product_name, s.year, s.price
FROM
Sales s
JOIN
Product p
ON
s.product_id = p.product_id
复制代码
总结
INNER JOIN
:仅返回匹配的记录。
LEFT JOIN
:返回左表的所有记录,即使右表没有匹配的记录。
RIGHT JOIN
:返回右表的所有记录,即使左表没有匹配的记录。
FULL JOIN
:返回左表和右表的所有记录,没匹配的部门用 NULL 添补。
CROSS JOIN
:返回两张表的笛卡尔积,生成所有大概的组合。
SELF JOIN
:将表与自身进行连接,常用于表示层级关系。
NATURAL JOIN
:自动根据同名列进行连接。
在MySQL中,JOIN操作默认使用的是INNER JOIN。INNER JOIN是MySQL默认的JOIN类型。它返回两个表中符合条件的行。INNER JOIN使用ON关键字来指定连接条件,将两个表中符合条件的记录合并在一起,生成一个新的结果集。
3、进店却未进行过交易的顾客
# Write your MySQL query statement below
SELECT
v.customer_id,count(v.customer_id)count_no_trans
FROM
Visits v
LEFT JOIN
Transactions t
ON
v.visit_id = t.visit_id
WHERE
transaction_id is NULL
GROUP BY
v.customer_id
复制代码
4、上升的温度
SELECT
a.id
FROM
Weather as a
CROSS JOIN
Weather as b
WHERE
datediff(a.recordDate,b.recordDate) = 1
AND
a.Temperature >b.Temperature
复制代码
5、每台机器的历程平均运行时间
# Write your MySQL query statement below
SELECT
machine_id, round(sum(if(activity_type = 'start', -timestamp, timestamp)) / count(*)*2, 3) as processing_time
FROM
Activity
GROUP BY
machine_id
复制代码
6、员工奖金
# Write your MySQL query statement below
SELECT
e.name, b.bonus
FROM
Employee e
LEFT JOIN
Bonus b
ON
e.empId = b.empId
WHERE
b.bonus is NULL OR b.bonus < 1000
复制代码
7、门生们参加各科测试的次数
SELECT
s.student_id, s.student_name, sub.subject_name, IFNULL(grouped.attended_exams, 0) AS attended_exams
FROM
Students s
CROSS JOIN
Subjects sub
LEFT JOIN (
SELECT student_id, subject_name, COUNT(*) AS attended_exams
FROM Examinations
GROUP BY student_id, subject_name
) grouped
ON s.student_id = grouped.student_id AND sub.subject_name = grouped.subject_name
ORDER BY s.student_id, sub.subject_name;
复制代码
8、至少有5名直接下属的司理
# Write your MySQL query statement below
SELECT
b.name
FROM
Employee a
LEFT JOIN
Employee b
ON
a.managerId = b.id
GROUP BY
a.managerId
HAVING
COUNT(b.id)>=5
复制代码
9、确认率
# Write your MySQL query statement below
SELECT
T1.user_id,round(count(if(T2.action = "confirmed",true,null)) / count(*),2) AS confirmation_rate
FROM
Signups as T1
JOIN
confirmations AS T2
ON
T1.user_id = T2.user_id
GROUP BY
T1.user_id;
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4