• SQL语句(十二)分组查询


    (十二)分组查询

    • 将数据表中的数据按某种条件分成组,按组显示统计信息

    • 查询各班学生的最大年龄、最小年龄、平均年龄和人数

    • 分组

      SELECT <字段名表1> FROM <表名> -- 这里字段名表1 应该 是 按照字段名表2 分组以后 能够产生唯一值的 字段(如:班级)

      [WHERE <条件> ]

      GROUP BY <字段名表2>

      [HAVING <条件> ]

      [ORDER BY <字段名列表3> ]

    --例1 查询各班学生的最大年龄、最小年龄、平均年龄和人数
    -- 将多余空格删去
    UPDATE Student
    SET Sdept = ltrim(sdept)
    
    Select ltrim(Sdept) AS 系别, MAX(Sage) AS 最大, MIN(Sage) AS 最小,
    AVG(Sage) AS 平均, COUNT(*) AS 人数
    FROM Student
    GROUP BY ltrim(Sdept)
    ORDER BY 平均 DESC
    
    --例2 查询各班学生的最大年龄、最小年龄、平均年龄和人数
    --并且按平均年龄降序排列
    --见上
    
    --例3 查询各系别男生和女生人数
    SELECT Sdept, Ssex, COUNT(*) AS 人数
    FROM Student
    GROUP BY Sdept, Ssex  --通过系别,男女分组
    ORDER BY Sdept
    
    --例4 查询各系别姓张的学生的人数
    SELECT Sdept, Count(*) AS 张姓人数 
    FROM Student
    WHERE Sname LIKE '张%'
    GROUP BY Sdept
    
    --例5 查询姓"张"的学生人数等于1的班级 及 姓张的人数
    SELECT Sdept, Count(*) AS Douzi  
    FROM Student
    WHERE Sname LIKE '张%'
    GROUP BY Sdept
    Having COUNT(*) = 1
    
    --例6 查询各系别同学来自不同的省份人数,按班级排序
    Select Sdept, Province, Count(*)
    from Student
    GROUP BY Sdept, Province
    ORDER BY Sdept
    --(5)创建每个学生所选课程的学号和平均分,并按平均分排序的视图ST1。
    GO
    create View ST1(Sno, AVGE)
    AS
    Select Top 100 percent Sno, AVG(Grade) AS AVGE
    From SC
    Group by Sno
    Order by AVG(Grade) asc
  • 相关阅读:
    pands数据框(DataFrame)02
    mysql 临时表
    【转】Mysql 多表连接查询的执行细节 (一)
    【转】cuckoo hash
    [转]全域哈希
    【转】 bloom filter
    【转】bitmap
    golang 反汇编代码阅读-- defer
    assignment3
    Lecture 12: Visualizing and Understanding
  • 原文地址:https://www.cnblogs.com/douzujun/p/6590610.html
Copyright © 2020-2023  润新知