天天看點

sqlserver 資料庫面試題目

    今天參加完面試,遇到了一些sql題,現把這些題目一一列出,希望有人看到,如果你在面試過程中碰巧遇到此類問題,那麼就直接秒殺吧,哈哈。

    首先履歷一個stuscore表。其中name為姓名,subject為科目,score為成績。

  create table stuscore(
         name varchar(20),
         subject varchar(20),
         score int
     )                

    1、查找出有兩門成績小于60分的學生的所有成績的平均成績

    思路:首先求出有兩門成績小于60分的學生姓名,然後在求其平均成績

  select name,avg(score) from stuscore where name in
    (select name from stuscore where score < 60 group by name having count(*) >= 2)
group by name                

    2、查詢每個學生最大分數的科目及分數

    思路:首先擷取每個學生最大的分數值,然後在連接配接查詢

select a.name,a.subject,a.score from stuscore a,
    (select name max(score) score from stuscore group by name) b
where a.name = b.name and a.score = b.score                

    3、-- 行列轉換

select name as '姓名',
       max(case subject when '國文'  then score else 0 end) as '國文',
       max(case subject when '數學' then score else 0 end) as '數學',
       max(case subject when '英語' then score else 0 end) as '英語'
from stuscore group by name                

    說明:這裡加上max函數的原因是group by name。具體可以看下group by的用法以及注意事項

版權聲明:本文為CSDN部落客「weixin_33827590」的原創文章,遵循CC 4.0 BY-SA版權協定,轉載請附上原文出處連結及本聲明。

原文連結:https://blog.csdn.net/weixin_33827590/article/details/92130859