• 20141031--SQL分组,数学函数,聚合函数


     1 /*  通过代码操作:创建一个数据库,里面有一个学生信息表,
     2     内容包括:学号,姓名,性别,体重,年龄,语数外三门课分数,班级    插入20条数据
     3     执行以下查询操作:
     4     1.查姓王的同学的信息
     5     2.分别查每门课程最高分,最低分
     6     3.查男同学的名字,只查一列
     7     4.查每个班每门课程分别最高分最低分*/
     8 
     9 create database data01
    10 go
    11 use data01
    12 go
    13 create table xueshengxinxi--注意列之间用,隔开
    14 (
    15 [No.] int,
    16 name varchar(10),
    17 sex varchar(10),
    18 age int,
    19 [weight] decimal(10,2),
    20 Chinese int,
    21 Math int,
    22 English int
    23 )
    24 insert into xueshengxinxi values(1,'张蕾蕾','',20,50,95,90,97)
    25 insert into xueshengxinxi values(2,'李鑫','',21,65,90,90,88)
    26 insert into xueshengxinxi values(3,'刘莉莉','',21,55,90,80,100)
    27 insert into xueshengxinxi values(4,'张峰','',20,63,85,85,80)
    28 insert into xueshengxinxi values(5,'王乐','',20,66,80,90,73)
    29 insert into xueshengxinxi values(6,'王馨茹','',19,47,99,70,96)
    30 insert into xueshengxinxi values(7,'赵矿一','',20,70,70,60,55)
    31 insert into xueshengxinxi values(8,'程依依','',19,45,87,89,86)
    32 insert into xueshengxinxi values(9,'程依儿','',19,45,90,85,87)
    33 insert into xueshengxinxi values(10,'孙厚','',21,76,75,67,63)
    34 insert into xueshengxinxi values(11,'朱磊','',20,67,70,78,71)
    35 insert into xueshengxinxi values(12,'王谦','',22,71,80,81,74)
    36 insert into xueshengxinxi values(13,'孙丽娜','',21,49,90,71,96)
    37 insert into xueshengxinxi values(14,'张乐乐','',22,51,81,72,84)
    38 insert into xueshengxinxi values(15,'李忠','',21,61,79,81,75)
    39 insert into xueshengxinxi values(16,'李艳艳','',20,48,70,60,98)
    40 insert into xueshengxinxi values(17,'王萌萌','',22,50,90,63,70)
    41 insert into xueshengxinxi values(18,'刘星','',22,66,70,81,66)
    42 insert into xueshengxinxi values(19,'邹子冰','',21,44,70,70,80)
    43 insert into xueshengxinxi values(20,'富国庆','',22,70,80,50,70)
    44 
    45 select *from xueshengxinxi
    46 --查某姓的同学
    47 select *from xueshengxinxi where name like '刘%'
    48 --分别查每门课程最高分,最低分
    49 select top 1 *from xueshengxinxi order by Chinese desc--Chinese最高分
    50 select top 1 *from xueshengxinxi order by Math desc--Math最高分
    51 select top 1 *from xueshengxinxi order by English desc--English最高分
    52 select top 1 *from xueshengxinxi order by Chinese asc--Chinese最低分
    53 select top 1 *from xueshengxinxi order by Math --Math最低分
    54 select top 1 *from xueshengxinxi order by English --English最低分
    55 --    3.查男同学的名字,只查一列
    56 select name from xueshengxinxi where sex=''
    57 --    4.查每个班每门课程分别最高分最低分*/
    58 --把班级忘了,
    59 alter table xueshengxinxi add Class varchar(10)--添加班级一列
    60 update xueshengxinxi set Class='12级1班' where [No.] between 1 and 7
    61 update xueshengxinxi set Class='12级2班' where [No.] between 8 and 14
    62 update xueshengxinxi set Class='12级3班' where [No.] between 15 and 20
    63 --查每个班每门课程分别最高分最低分
    64 select top 1 *from xueshengxinxi where Class='12级1班' order by English
    65 select top 1 *from xueshengxinxi where Class='12级1班' order by Chinese
    66 select top 1 *from xueshengxinxi where Class='12级1班' order by Math
    67 select top 1 *from xueshengxinxi where Class='12级1班' order by English desc
    68 select top 1 *from xueshengxinxi where Class='12级1班' order by Chinese desc
    69 select top 1 *from xueshengxinxi where Class='12级1班' order by Math desc
    70 
    71 select top 1 *from xueshengxinxi where Class='12级2班' order by English
    72 select top 1 *from xueshengxinxi where Class='12级2班' order by Chinese
    73 select top 1 *from xueshengxinxi where Class='12级2班' order by Math
    74 select top 1 *from xueshengxinxi where Class='12级2班' order by English desc
    75 select top 1 *from xueshengxinxi where Class='12级2班' order by Chinese desc
    76 select top 1 *from xueshengxinxi where Class='12级2班' order by Math desc
    77 
    78 select top 1 *from xueshengxinxi where Class='12级3班' order by English
    79 select top 1 *from xueshengxinxi where Class='12级3班' order by Chinese
    80 select top 1 *from xueshengxinxi where Class='12级3班' order by Math
    81 select top 1 *from xueshengxinxi where Class='12级3班' order by English desc
    82 select top 1 *from xueshengxinxi where Class='12级3班' order by Chinese desc
    83 select top 1 *from xueshengxinxi where Class='12级3班' order by Math desc
     1 ---------------------聚合函数-------------------------
     2 --只针对一列操作,只返回一个值,可以组合使用
     3 select *from xueshengxinxi
     4 --求平均值 AVG 只能对数字类型进行操作。返回一个值,根据列的数据类型返回
     5 select avg(age) as 年龄 from xueshengxinxi 
     6 select AVG([weight]) as 体重 from xueshengxinxi 
     7 select AVG(Chinese) as 语文 from xueshengxinxi where Class='12级1班'
     8 -- 个数 COUNT() 括号内加字段 返回非空值的数量
     9 select COUNT(*) as 总人数 from xueshengxinxi--显示所有个数
    10 select COUNT(*) from xueshengxinxi where name like '王%'--按条件显示个数
    11 select COUNT(distinct Class) from xueshengxinxi--去重显示个数。(distinct)
    12 --最大值 MAX 最小值 MIN
    13 select MAX(English) from xueshengxinxi where Class='12级1班'
    14 select MIN(Math) from xueshengxinxi
    15 --和 SUM
    16 select SUM(Math) from xueshengxinxi
    17 --这些聚合函数只返回一个值,可以组合使用
    18 --组合使用聚合函数 , 使用,隔开
    19 select AVG(age)平均年龄, COUNT(*) as 人数 from xueshengxinxi--不用as可直接在括号后跟上要显示的列名
    20 select MAX(English) as 英语最高分, MAX(Math) as 数学最高分, MAX(Chinese) as 语文最高分 from xueshengxinxi
     1 --------分组--------
     2 --group by 只针对一列分组,先分完组,再进行操作(必须有聚合函数)
     3 select Class from xueshengxinxi group by Class
     4 select Class,AVG(Math) from xueshengxinxi group by Class
     5 select age from xueshengxinxi where age>=20 group by age--可以添加条件
     6 --可以显示人数用COUNT
     7 select age,COUNT(*) from xueshengxinxi where age between 18 and 20 group by age
     8 --习题按照课程的分数段查询每个班有多少人
     9 select Class,COUNT(*) from xueshengxinxi where Chinese>=80 group by Class
    10 select Class,COUNT(*) from xueshengxinxi where Chinese>=60 and English>=60 and Math>=60 group by Class
    11 --group by 特殊的having 后面加聚合函数的选择条件
    12 --group by 先看group by 之前的再看之后的
    13 --先from之前,在有where的时候先算where
    14 select Class,COUNT(*) from xueshengxinxi where Chinese>=80 group by Class having COUNT(*)>5
    15 select Class,COUNT(*),AVG(Math) from xueshengxinxi group by Class having AVG(Math)>70
    16 --每个班的数学平均分
    17 select Class,COUNT(*),AVG(Math) from xueshengxinxi where Math>75 group by Class order by count(*) 
    18 --每个班的语,数,外三门课的最高分
    19 select Class,MAX(Chinese) as 语文,MAX(Math) as 数学,MAX(English) as 外语 from xueshengxinxi group by Class
     1 ------------------------------数学函数---------------------------
     2 --print 是在消息框中显示  select 是在结果中显示
     3 --取绝对值, ABS 在要取绝对值的那一列前 ABS(列名)
     4 alter table xueshengxinxi add test int--添加test一列
     5 alter table xueshengxinxi add test2 decimal(18,2)
     6 select *from xueshengxinxi
     7 select ABS(-10)
     8 print abs(-15)
     9 select [No.],name,abs(test) from xueshengxinxi--显示某一列的绝对值
    10 select *from xueshengxinxi where ABS(test)>50--绝对值大于50的
    11 
    12 --取整数 上限CEILING   下限FLOOR 前后都可使用,
    13 select *from xueshengxinxi where CEILING(test2)>6--上限大于6的
    14 select FLOOR(test2) from xueshengxinxi --取下限
    15 
    16 --POWER 次方  POWER(列名,x次方)
    17 select POWER(age,2),POWER(age,3) from xueshengxinxi--查询age列的平方 3次方
    18 --SQRT 平方根
    19 select SQRT(age) from xueshengxinxi--age列的平方根
    20 --ROUND  四舍五入  ROUND(列名,x位小数)
    21 select test2,ROUND(test2,0) from xueshengxinxi-- test2列的四舍五入(小数点后0个)
  • 相关阅读:
    Windows Phone 7 LongListSelector控件实现分类列表和字母索引
    Windows Phone 7 自定义弹出窗口
    Windows 8 异步编程
    Windows Phone 7 Http请求添加Cookie的方法
    XNA游戏:软键盘弹窗输入
    Windows Phone 8 手机存储卡数据
    Windows Phone 7 框架和页面
    Windows Phone 8 发音合成与语音识别
    Windows 8 Hello World
    Windows Phone 8 程序联系人存储
  • 原文地址:https://www.cnblogs.com/Tirisfal/p/4064211.html
Copyright © 2020-2023  润新知