天天看點

sql 修改列名_SQL 彙總分析

一.彙總分析
  1. count(列名): 求某列的行數,不包含空值(null); count(*) 求全部的行數,包含空值(null)
  2. sum(列名): 對某列資料求和,隻能對數值類型的列計算
  3. avg(列名): 求某列資料的平均值,隻能對數值類型的列計算
  4. max(列名): 求某列資料的最大值
  5. min(列名): 求某列資料的最小值
  • 注意
  1. 如果輸入的是列名,在計算前會将空值Null排除在外。
  2. 如果在彙總時不想計算重複值,在彙總函數前面加distinct,先删除重複值在計算。
練習

sum, avg, max, min
select sum(成績), avg(成績), min(成績), max(成績)
from score;
           
distinct 去除重複值
select count(distinct 姓名)
from student;
           
sql 修改列名_SQL 彙總分析
練習:彙總分析
  1. 查詢課程編号為“0002”的總成績
  2. 查詢選了課程的學生人數
sql 修改列名_SQL 彙總分析
sql 修改列名_SQL 彙總分析
二.分組 group by 加入分組後,sql執行順序為:
  1. from:從哪張表中查詢資料
  2. where:查詢條件
  3. group by:分組
  4. select:查詢結果
練習:
  • 查詢各科成績最高和最低的分
sql 修改列名_SQL 彙總分析
  • 查詢每門課程被選修的學生數
sql 修改列名_SQL 彙總分析
  • 查詢男生、女生人數
sql 修改列名_SQL 彙總分析
三.對分組結果指定條件having 加入了having子句,我們新的sql執行順序為:

1.from:從那張表中查詢資料

2.where:查詢條件

3.group by:分組

4.having:對分組結果指定查詢條件

5.select:查詢結果

練習:
  • 查詢平均成績大于60分學生的學号和平均成績
sql 修改列名_SQL 彙總分析
  • 查詢至少選修兩門課程的學生學号
sql 修改列名_SQL 彙總分析
  • 查詢同名同姓學生名單并統計同名人數
sql 修改列名_SQL 彙總分析
四.用sql解決業務問題

1.翻譯成大白話

2.寫出分析思路

3.寫出對應的sql 子句

練習:如何計算每門課程的平均成績,并且平均成績大于等于80分 1.翻譯問題

如題目,無需翻譯

2.分析思路

select 查詢結果,每門課程号、平均成績avg(成績)

from 從哪張表查詢資料,score表

where 查詢條件,無

group by 分組,以每個課程号作為分組條件

having 對分組結果指定條件,平均成績>=80

3.寫出sql

select 課程号,avg(成績) from score

group by 課程号

having avg(成績)>=80;

總結:

1.當我們看到關鍵字“每”,如每組,每個...需要用分組;

2.當我們看到關鍵字平均、個數,最大、最小...需要用彙總;

3.當我們看到關鍵字大于、小于、等于...需要用查詢條件。

五.對查詢結果排序 order by + asc/desc

1.降序desc:

從大到小

2.升序asc:

從小到大,預設的排序

  • 同時我們也可以指定多個排序列名 order by <列名1> asc,<列名2> desc;
  • 對于 含有空值(null)的列排序時 ,空值會在查詢結果開頭顯示,友善查詢表格中空值的情況
加入了order by子句,我們新的sql執行順序為:

1.from:從那張表中查詢資料

2.where:查詢條件

3.group by:分組

4.having:對分組結果指定查詢條件

5.select:查詢結果

6.order by:對查詢結果排序;

  • limit子句

從查詢結果中取出指定行,我們引入新的子句

limit 加入了limit子句,我們新的sql執行順序為:

1.from:從那張表中查詢資料

2.where:查詢條件

3.group by:分組

4.having:對分組結果指定查詢條件

5.select:查詢結果

6.order by:對查詢結果排序

7.limit:從查詢結果中取出指定行

練習: 1.查詢不及格的課程并按照課程号從大到小排
sql 修改列名_SQL 彙總分析
2.查詢每門課程的平均成績,結果按平均成績升序排列。平均成績相同時,按課程号降序排列
sql 修改列名_SQL 彙總分析
六.如何看懂報錯資訊
  • 常見錯誤1:
在group by/having中使用了select裡as後的别名

因為select子句在group by/having子句之後執行,是以引用别名會報錯

  • 常見錯誤2:
在where中使用聚合函數

在where子句用彙總函數運作會報錯

  • 常見錯誤3:
字元串類型的數字

把表中要進行計算的列資料類型修改為數值之後在進行相關操作

繼續sqlzoo練習(相對簡單的入門難度sql,練習一下吧)

SELECT from Nobel Tutorial

SELECT from nobel

sql 修改列名_SQL 彙總分析
sql 修改列名_SQL 彙總分析
sql 修改列名_SQL 彙總分析
sql 修改列名_SQL 彙總分析
sql 修改列名_SQL 彙總分析
sql 修改列名_SQL 彙總分析
sql 修改列名_SQL 彙總分析
sql 修改列名_SQL 彙總分析
sql 修改列名_SQL 彙總分析
sql 修改列名_SQL 彙總分析
sql 修改列名_SQL 彙總分析
sql 修改列名_SQL 彙總分析
sql 修改列名_SQL 彙總分析
sql 修改列名_SQL 彙總分析

SELECT from nobel

sql 修改列名_SQL 彙總分析
sql 修改列名_SQL 彙總分析
sql 修改列名_SQL 彙總分析
sql 修改列名_SQL 彙總分析
sql 修改列名_SQL 彙總分析
sql 修改列名_SQL 彙總分析
sql 修改列名_SQL 彙總分析
sql 修改列名_SQL 彙總分析

繼續閱讀