【刷題】麪筋-數據庫-查出「張」姓學生中平均成績大於75分的學生信息

HAVING:

  • 在 SQL 中增長 HAVING 子句緣由是,WHERE 關鍵字沒法與聚合函數一塊兒使用。html

  • HAVING 子句可讓咱們篩選分組後的各組數據。sql

示例

SELECT Websites.name, Websites.url, SUM(access_log.count) AS nums FROM (access_log
INNER JOIN Websites
ON access_log.site_id=Websites.id)
GROUP BY Websites.name
HAVING SUM(access_log.count) > 200;

表信息

  • 表名:student_score
  • 字段名:name course score

查出「張」姓學生中平均成績大於75分的學生信息

  • 關鍵點:

    • 嵌套select
    • 「張」姓:%模糊匹配,name like '張%'
    • 平均值使用HAVING,與聚合函數鏈接:having avg(score)>75
  • 代碼:

    • select * from student where name in (select name from student where name like '張%' group by name having avg(score) > 75)

查詢出每門課程的成績都大於80的學生姓名

  • SELECT S.name FROM Student S GROUP BY S.name Having MIN(S.score)>=80

其餘問題羅列

  • 一、請寫出SQL,找出全部姓張的學生,並按年齡從小到大排列;

    • SELECT * FROM TableX WHERE Name LIKE '張%' ORDER BY Age;
  • 二、請寫出SQL,取出計算機科考成績不及格的學生;

    • SELECT * FROM TableX x, TableY y WHERE x.Code = y.Code AND Class = '計算機' AND Score < 60;
  • 三、經過等值聯接,取出Name、Class、Score,請寫出SQL即輸出結果

    • SELECT x.Name, y.Class, y.Score FROM TableX x, TableY y WHERE x.Code = y.Code
  • 四、經過外聯接,取出每一個學生的Name、Class、Score、請寫SQL輸出結果

Left Out:SELECT x.Name, y.Class, y.Score FROM TableX x, TableY y WHERE x.Code = y.Code(+)  
Right Out: SELECT x.Name, y.Class, y.Score FROM TableX x, TableY y WHERE x.Code(+) = y.Code  
Full Out:Left join union all right join
  • 五、請寫SQL,在TableX 表中增長一條學生記錄(學號:97005 姓名:趙六 年齡:20);

    • INSERT INTO TableX(Code, Name, Age) VALUES('97005','趙六',20);
    • COMMIT;
  • 六、李五的年齡記錄錯了,應該是21,請寫SQL,根據主鍵進行更新;

    • UPDATE TableX SET Age = 21 WHERE Code in (SELECT Code FROM TableX WHERE Name = '李五')
  • 七、請寫SQL,刪除TableX中沒有考試成績的學生記錄,請使用not in條件;

    • DELETE FROM TableX WHERE Code Not in (SELECT Code FROM TableY WHERE NVL(Score,0) = 0)

參考連接

END

相關文章
相關標籤/搜索