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


HAVING:

  • 在 SQL 中增加 HAVING 子句原因是,WHERE 關鍵字無法與聚合函數一起使用。

  • HAVING 子句可以讓我們篩選分組后的各組數據。

示例

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

其他問題羅列

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

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

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

    • SELECT x.Name, y.Class, y.Score FROM TableX x, TableY y WHERE x.Code = y.Code
  • 4、通過外聯接,取出每個學生的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  
  • 5、請寫SQL,在TableX 表中增加一條學生記錄(學號:97005 姓名:趙六 年齡:20);

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

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

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

參考鏈接

END


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM