gpt4 book ai didi

sql - 求职面试测试

转载 作者:行者123 更新时间:2023-12-04 22:26:43 24 4
gpt4 key购买 nike

刚面试完回来。我有这个问题:

我有一个包含 3 列的表格 Student, Profession, Mark

每个学生学习不止一种专业。

我需要编写 SQL Server 查询,以返回数学和物理 (AND) 均为 100 分的学生的不同姓名

知道如何实现这个问题吗?

这是我的尝试:(它并不完美......)

SELECT *  FROM Marks
CROSS APPLY
(SELECT Student_Name WHERE (Profession='Physics')AND(Mark=100)
UNION
SELECT Student_Name WHERE (Profession='Mathematics')AND(Mark=100)
)
AS Question

最佳答案

这可以通过 JOIN 完成,但我更喜欢尽可能进行一次扫描。

SELECT
M.Student_Name
FROM
dbo.Marks M
WHERE
M.Profession IN ('Physics', 'Mathematics')
AND M.Mark = 100
GROUP BY
M.Student_Name
HAVING
Count(DISTINCT M.Profession) = 2
;

另一方面,如果表在 Profession 和/或 Mark 列上有索引,可能更好加入:

SELECT DISTINCT
P.Student_Name
FROM
dbo.Marks P
INNER JOIN dbo.Marks M
ON P.Student_Name = M.Student_Name
WHERE
P.Profession = 'Physics'
AND P.Mark = 100
AND M.Profession = 'Mathematics'
AND M.Mark = 100
;

关于sql - 求职面试测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17117887/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com