日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

sql倒序排列取第一条_从零学会SQL·三——汇总分析

發布時間:2023/12/4 数据库 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 sql倒序排列取第一条_从零学会SQL·三——汇总分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、常用匯總函數的練習

score表

問題:

  • 查詢課程編號為“0002”的總成績
  • 查詢選了課程的學生人數
  • 查詢學號為“0001”的學生的最高分、最低分和平均分

解答SQL語句如下:

-- 查詢課程編號為“0002”的總成績 SELECT 學號,SUM(成績)FROM score WHERE `課程號`='0002';-- 查詢選了課程的學生人數 SELECT COUNT(DISTINCT 學號)FROM score WHERE `課程號` IS NOT NULL;-- 查詢學號為“0001”的學生的最高分 SELECT 學號,MAX(成績),MIN(成績),AVG(成績)FROM score WHERE `學號`='0001';

二、分組練習

student表

score表

問題:

  • 查詢各科成績的最高分和最低分
  • 查詢每門課程被選修的學生數
  • 查詢男生、女生的人數

解答SQL語句如下:

-- 查詢各科成績的最高分和最低分 SELECT 課程號,MAX(成績),MIN(成績)FROM score GROUP BY `課程號`;-- 查詢每門課程被選修的學生數 SELECT 課程號,COUNT(DISTINCT 學號)FROM score GROUP BY `課程號`;-- 查詢男生、女生的人數 SELECT 性別,COUNT(DISTINCT 性別)FROM student GROUP BY `性別`;

三、給分組結果指定條件的練習

student表

score表

問題:

  • 查詢平均成績大于60分學生的學號和平均成績
  • 查詢至少選修兩門課程的學生學號
  • 查詢姓名相同的學生名單并統計同名人數

解答:

SQL語句如下:

-- 查詢平均成績大于60分學生的學號和平均成績 SELECT 學號,AVG(成績) AS 平均成績FROM score GROUP BY `學號`HAVING AVG(`成績`)>60;-- 查詢至少選修兩門課程的學生學號 SELECT 學號,COUNT(課程號) AS 選修課程數FROM score GROUP BY `學號`HAVING COUNT(`課程號`)>=2;-- 查詢姓名相同的學生名單并統計同名人數 SELECT 姓名,COUNT(姓名) AS 同名人數 FROM student GROUP BY `姓名` HAVING COUNT(`姓名`)>=2;

四、用SQL解決業務問題的解題思路

score表

問題:

查詢出平均成績在80分及以上的課程,并寫出分析思路。

解答:

  • 第一步,翻譯問題,理解問題
  • 求出每一門課程的平均成績,然后選出平均成績在80分及以上的課程

    2. 第二步,明確分析思路

    分析思路

    3. 第三步,寫SQL語句

    -- 查詢出平均成績在80分及以上的課程,并寫出分析思路 SELECT 課程號,AVG(成績) AS 平均成績 -- 第四步:查詢結果顯示課程號,平均成績FROM score -- 第一步:從score表中查找數據GROUP BY `課程號` -- 第二步:按課程號分組HAVING AVG(`成績`)>=80; -- 第三步:給分組結果指定條件為平均成績>=80

    五、排序練習

    score表

    問題:

    寫出下列問題對應的SQL語句,并畫出運行順序

  • 查詢不及格的課程,并按課程號從大到小排列
  • 查詢每門課程的平均成績,結果按平均成績升序排序;平均成績相同時,按課程號降序排序
  • 查詢課程編號為“0003”且成績>=80的學生學號,結果按按分數降序排列
  • 統計每門課程的學生選修人數(超過2人的課程才統計),要求輸出課程號和選修人數,查詢結果按人數降序排序,若人數相同,按課程號升序排序
  • 查詢至少兩門課程成績優秀的同學學號及其成績優秀的課程的平均成績
  • 解答:

    題1~4答案:

    -- 查詢不及格的課程,并按課程號從大到小排列 SELECT 課程號,成績 -- 第三步,查詢出成績<60分的課程號和成績FROM score -- 第一步,從score表中查詢數據WHERE `成績`<60 -- 第二步,查詢條件是成績<60分 ORDER BY `課程號` DESC; -- 第四步,對查詢結果按課程號降序排序/*查詢每門課程的平均成績,結果按平均成績升序排序; 平均成績相同時,按課程號降序排序*/ SELECT 課程號,AVG(成績) AS 平均成績 -- 第三步,對分組后的課程計算每門課程的平均成績,并把列名“AVG(成績)”命名為“平均成績”FROM score -- 第一步,從score表中查詢數據GROUP BY `課程號` -- 第二步,按課程號分組 ORDER BY 平均成績 ASC ,`課程號` DESC ; -- 第四步,按照課程的平均成績升序排序,當平均成績相同時按照課程號降序排序-- 查詢課程編號為“0003”且成績>90的學生學號,結果按按分數降序排列 SELECT 學號,成績 -- 第三步,查詢結果顯示學號和成績FROM score -- 第一步,從score表中查詢數據WHERE `課程號`='0003' AND `成績`>=80 -- 第二步,查詢條件是課程號為0003并且成績>=80 ORDER BY `成績` desc ; -- 對查詢結果按照成績進行倒序排序/*統計每門課程的學生選修人數(超過2人的課程才統計), 要求輸出課程號和選修人數,查詢結果按人數降序排序;若人數相同,按課程號升序排序*/ SELECT 課程號,COUNT(學號) AS 選修人數 -- 第四步,查詢結果顯示課程號和“COUNT(學號)”,并把“COUNT(學號)”命名為“選修人數”FROM score -- 第一步,從score表中查詢數據GROUP BY `課程號` -- 第二步,按照課程號分組HAVING COUNT(`學號`)>2 -- 給分組指定條件,選修該課程超過2人 ORDER BY 選修人數 DESC ,`課程號` ASC ; -- 對查詢結果按照選修人數進行倒序排序,如果選修人數相同,則按照課程號進行升序排序

    題5較為復雜,下面詳細解答:

    (1)翻譯題目,理解題目

    先將題目逐個拆解:

    查詢“至少兩門”“課程成績優秀”的【同學學號】及其“成績優秀的課程”的【平均成績】

    也就是:

  • 需要查詢的字段是【學號】和【平均成績】
  • 【學號】的限制條件是“課程成績優秀”,“課程成績優秀”的限制條件是“至少兩門”,“平均成績”的限制條件是“成績優秀的課程”
  • (2)確定分析思路

  • 第一步:得到每個學生的平均成績,查詢結果顯示學號和平均成績
  • select -- 查詢結果:學號,avg(成績) as 平均成績

    from -- 從哪張表查找數據:score

    where -- 限制條件:沒有

    group by -- 分組:按學號分組

    having --給分組指定條件:沒有

    order by -- 排序:沒有

    limit -- 指定行數:沒有

    查詢語句如下:

    SELECT 學號,AVG(成績) AS 平均成績FROM score GROUP BY `學號`;

    2. 第二步:加上限制條件

    ① 給“學號”加上“課程成績優秀”——查詢限制條件where

    ② 給“平均成績”加上“成績優秀的課程”——查詢限制條件where

    ③ 給“課程成績優秀”加上“至少2門”——在查詢限制條件where的基礎上給分組指定條件having

    select -- 查詢結果:學號,avg(成績) as 平均成績

    from -- 從哪張表查找數據:score

    where -- 限制條件:成績>=90

    group by -- 分組:按學號分組

    having --給分組指定條件:count(課程號)>=2

    order by -- 排序:沒有

    limit -- 指定行數:沒有

    查詢語句如下:

    SELECT 學號,AVG(成績) AS 平均成績FROM score WHERE `成績`>=90GROUP BY `學號`HAVING COUNT(`課程號`)>=2;

    總結

    以上是生活随笔為你收集整理的sql倒序排列取第一条_从零学会SQL·三——汇总分析的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。