今天參加完面試,遇到了一些sql題,現把這些題目一一列出,但願有人看到,若是你在面試過程當中碰巧遇到此類問題,那麼就直接秒殺吧,哈哈。面試
首先簡歷一個stuscore表。其中name爲姓名,subject爲科目,score爲成績。sql
create table stuscore( name varchar(20), subject varchar(20), score int )
一、查找出有兩門成績小於60分的學生的全部成績的平均成績函數
思路:首先求出有兩門成績小於60分的學生姓名,而後在求其平均成績code
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
二、查詢每一個學生最大分數的科目及分數數學
思路:首先獲取每一個學生最大的分數值,而後在鏈接查詢table
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
三、-- 行列轉換class
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的用法以及注意事項select