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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

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

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

一、常用匯總函數(shù)的練習(xí)

score表

問題:

  • 查詢課程編號(hào)為“0002”的總成績(jī)
  • 查詢選了課程的學(xué)生人數(shù)
  • 查詢學(xué)號(hào)為“0001”的學(xué)生的最高分、最低分和平均分

解答SQL語(yǔ)句如下:

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

二、分組練習(xí)

student表

score表

問題:

  • 查詢各科成績(jī)的最高分和最低分
  • 查詢每門課程被選修的學(xué)生數(shù)
  • 查詢男生、女生的人數(shù)

解答SQL語(yǔ)句如下:

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

三、給分組結(jié)果指定條件的練習(xí)

student表

score表

問題:

  • 查詢平均成績(jī)大于60分學(xué)生的學(xué)號(hào)和平均成績(jī)
  • 查詢至少選修兩門課程的學(xué)生學(xué)號(hào)
  • 查詢姓名相同的學(xué)生名單并統(tǒng)計(jì)同名人數(shù)

解答:

SQL語(yǔ)句如下:

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

四、用SQL解決業(yè)務(wù)問題的解題思路

score表

問題:

查詢出平均成績(jī)?cè)?0分及以上的課程,并寫出分析思路。

解答:

  • 第一步,翻譯問題,理解問題
  • 求出每一門課程的平均成績(jī),然后選出平均成績(jī)?cè)?0分及以上的課程

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

    分析思路

    3. 第三步,寫SQL語(yǔ)句

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

    五、排序練習(xí)

    score表

    問題:

    寫出下列問題對(duì)應(yīng)的SQL語(yǔ)句,并畫出運(yùn)行順序

  • 查詢不及格的課程,并按課程號(hào)從大到小排列
  • 查詢每門課程的平均成績(jī),結(jié)果按平均成績(jī)升序排序;平均成績(jī)相同時(shí),按課程號(hào)降序排序
  • 查詢課程編號(hào)為“0003”且成績(jī)>=80的學(xué)生學(xué)號(hào),結(jié)果按按分?jǐn)?shù)降序排列
  • 統(tǒng)計(jì)每門課程的學(xué)生選修人數(shù)(超過2人的課程才統(tǒng)計(jì)),要求輸出課程號(hào)和選修人數(shù),查詢結(jié)果按人數(shù)降序排序,若人數(shù)相同,按課程號(hào)升序排序
  • 查詢至少兩門課程成績(jī)優(yōu)秀的同學(xué)學(xué)號(hào)及其成績(jī)優(yōu)秀的課程的平均成績(jī)
  • 解答:

    題1~4答案:

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

    題5較為復(fù)雜,下面詳細(xì)解答:

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

    先將題目逐個(gè)拆解:

    查詢“至少兩門”“課程成績(jī)優(yōu)秀”的【同學(xué)學(xué)號(hào)】及其“成績(jī)優(yōu)秀的課程”的【平均成績(jī)】

    也就是:

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

  • 第一步:得到每個(gè)學(xué)生的平均成績(jī),查詢結(jié)果顯示學(xué)號(hào)和平均成績(jī)
  • select -- 查詢結(jié)果:學(xué)號(hào),avg(成績(jī)) as 平均成績(jī)

    from -- 從哪張表查找數(shù)據(jù):score

    where -- 限制條件:沒有

    group by -- 分組:按學(xué)號(hào)分組

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

    order by -- 排序:沒有

    limit -- 指定行數(shù):沒有

    查詢語(yǔ)句如下:

    SELECT 學(xué)號(hào),AVG(成績(jī)) AS 平均成績(jī)FROM score GROUP BY `學(xué)號(hào)`;

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

    ① 給“學(xué)號(hào)”加上“課程成績(jī)優(yōu)秀”——查詢限制條件where

    ② 給“平均成績(jī)”加上“成績(jī)優(yōu)秀的課程”——查詢限制條件where

    ③ 給“課程成績(jī)優(yōu)秀”加上“至少2門”——在查詢限制條件where的基礎(chǔ)上給分組指定條件having

    select -- 查詢結(jié)果:學(xué)號(hào),avg(成績(jī)) as 平均成績(jī)

    from -- 從哪張表查找數(shù)據(jù):score

    where -- 限制條件:成績(jī)>=90

    group by -- 分組:按學(xué)號(hào)分組

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

    order by -- 排序:沒有

    limit -- 指定行數(shù):沒有

    查詢語(yǔ)句如下:

    SELECT 學(xué)號(hào),AVG(成績(jī)) AS 平均成績(jī)FROM score WHERE `成績(jī)`>=90GROUP BY `學(xué)號(hào)`HAVING COUNT(`課程號(hào)`)>=2;

    總結(jié)

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

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。