博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
分组查询
阅读量:4226 次
发布时间:2019-05-26

本文共 813 字,大约阅读时间需要 2 分钟。

  • 分组查询

在这里插入图片描述

  SELECT CourseID,AVG(Score) AS 课程平均成绩

  FROM Score

  GROUP BY CourseID

以上这种类型查询 ,在SQL Sever 中叫作分组查询,分组查询采用GROUP BY 子句来实现。

  • 多列分组查询

    而如果要统计每个学期男、女学生人数,则理论上先把每个学期分开,再针对每个学期,把男、女学生人数各自统计,也就是需要按照两个列进行分组:所属年纪和性别。T-SQL语句如下。

    SELECT COUNT(*) AS 人数,SGrade AS 年级,SSex AS 性别 FROM Students
    GROUP BY SGrade,SSex
    ORDER BY SGrade

    而结果如下:

    在这里插入图片描述

    不难理解,使用GROUP BY 关键字时。在SELECT 列表中可以指定的列是有限制的,仅允许以下几项。
    被分组的列为每个分组返回一个值的表达式,如聚合函数计算出的列。

  • 使用HAVING子句进行分组筛选

    (1)查询年级总人数超过15的年级。

    首先可以通过分组查询获取每个年级的总人数,对应的T-SQL语句如下。

  SELECT COUNT(*) AS 人数,SGrade AS 年级 FROM Students
  GROUP BY SGrade

    但是还有一个条件: 人数超过15的年级。这个时候,牵扯到分组统计后的条件限制,限制条件为COUNT(*)>15。这时候使用WHERE子句是不能满足查询要求的。因为WHERE子句只能对没有分组统计前的数据行进行筛选。对分组后的条件的筛选必须使用使用HAVING子句,简单地说,HAVING子句用来分组后的数据进行筛选,将"组"看作"列"来限定条件。

      以上需求的T-SQL语句如下。

    SELECT COUNT(*) AS 人数,SGrade AS 年级 FROM Students
   GROUP BY SGrade
    HAVING COUNT(*)>15

转载地址:http://wtdqi.baihongyu.com/

你可能感兴趣的文章
用例建模指南
查看>>
20091221
查看>>
嵌入式系统开发之中断控制的实现
查看>>
U-BOOT源码分析及移植
查看>>
一种新的BootLoader启动引导方式研究
查看>>
Linux中.a,.la,.o,.so文件的意义和编程实现
查看>>
The Linux kernel
查看>>
u-boot的Makefile分析
查看>>
Linux 设备驱动 Edition 3
查看>>
Linux驱动开发学习的简单步骤
查看>>
LINUX下编程工具常见用法小结
查看>>
驱动中位域操作简析
查看>>
Linux 引导过程内幕
查看>>
十年学会程序设计
查看>>
GPS NMEA-0183协议详解
查看>>
Rational 最新软件试用下载地址
查看>>
正则表达式30分钟入门教程
查看>>
Build the Hack CPU with Verilog -- 陈硕
查看>>
《计算机系统要素》配套软件和资料下载
查看>>
u-boot 启动过程 —— 基于S3C2410 --转载自周明
查看>>