1. 程式人生 > >今天做的一個SQL面試題,用到了HAVING語句來限制函式關係

今天做的一個SQL面試題,用到了HAVING語句來限制函式關係

面試題目如上。

第一題的問題主要是理解問題,容易寫成去掉"李明"的課程的學生,而不是沒選他課的學生

比如錯誤sql:SELECT
S.SNO
FROM
S
LEFT JOIN SC ON S.SNO = SC.SNO
WHERE
SC.CNO NOT IN (
SELECT
CNO
FROM
C
WHERE
CTEACHER = '李明'

)

正確寫法應該是查出來選了他課的學生的id,然後查詢id不在此列的學生id,正確sql是:

SELECT
S.SNAME
FROM
S
WHERE
S.SNO NOT IN (
SELECT
S.SNO
FROM
S
LEFT JOIN SC ON S.SNO = SC.SNO
WHERE
SC.CNO IN (
SELECT
CNO
FROM
C
WHERE
CTEACHER = '李明'
)

)

第二個題,用到了HAVING語句來限制函式,正確sql是:

SELECT
S.SNAME,
AVG(sc.SCGRADE)
FROM
S
INNER JOIN SC ON S.SNO = sc.SNO
INNER JOIN C ON sc.CNO = C.CNO
WHERE
sc.SCGRADE < 60
GROUP BY
S.SNO
HAVING

COUNT(sc.SCGRADE) >= 2

學習sql任重而道遠,今天這個sql想了半個多小時,如果面試去的話,估計就GG了