今天參加完面試,遇到了一些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