1.用一条SQL语句 查询出每门课都大于80分的学生姓名
name kecheng fenshu 张三 语文 81张三 数学 75李四 语文 76李四 数学 90王五 语文 81王五 数学 100王五 英语 90
代码:只要找出存在小于80的not in就好了
-----------------------------------use handsomecuicreate table Grade( name varchar(5), course varchar(5), score int)-----------------------------------bulk insert Grade from 'C:\Users\Administrator\Desktop\分数.txt'with( fieldterminator='\t', rowterminator='\n')select * from Grade-------------------------------------查询所有成绩在80分以上的学生姓名select distinct name from Grade where name not in( select distinct name from Grade where score<=80)-----------------------------------
2.学生表 如下:自动编号 学号 姓名 课程编号 课程名称 分数1 2005001 张三 0001 数学 692 2005002 李四 0001 数学 893 2005001 张三 0001 数学 69删除除了自动编号不同,其他都相同的学生冗余信息
代码:相同信息,肯定要分组了
-----------------------------------create table Grade1( 自动编号 int, 学号 varchar(10), 姓名 varchar(5), 课程编号 varchar(5), 课程名称 varchar(50), 分数 int)-----------------------------------bulk insert Grade1 from 'C:\Users\Administrator\Desktop\分数.txt'with( fieldterminator='\t', rowterminator='\n')select * from Grade1-------------------------------------删除除了自动编号不同,其他都相同的学生冗余信息delete Grade1 where 自动编号 not in (select min(自动编号) from Grade1 group by 学号,姓名,课程编号,课程名称,分数)
3.怎么把这样一个表year month amount1991 1 1.11991 2 1.21991 3 1.31991 4 1.41992 1 2.11992 2 2.21992 3 2.31992 4 2.4查成这样一个结果year m1 m2 m3 m41991 1.1 1.2 1.3 1.41992 2.1 2.2 2.3 2.4
代码:1991,1992分组
-----------------------------------create table date1105( styear int, stmonth int, stamount float)-----------------------------------bulk insert date1105 from 'C:\Users\Administrator\Desktop\分数.txt'with ( fieldterminator='\t', rowterminator='\n')-----------------------------------select styear,(select stamount from date1105 m where stmonth=1 and m.styear=date1105.styear)as m1,(select stamount from date1105 m where stmonth=2 and m.styear=date1105.styear)as m2,(select stamount from date1105 m where stmonth=3 and m.styear=date1105.styear)as m3,(select stamount from date1105 m where stmonth=4 and m.styear=date1105.styear)as m4from date1105 group by styear
4.复制表结构,以及复制表:
-------------------------------select * from date1105--复制表结构,不复制数据select * into date1105_1 from date1105 where 1<>1select * from date1105_1drop table date1105_1select styear a,stmonth b,stamount c into date1105_1 from date1105select * from date1105_1-------------------------------
5.三种Select改变列名的方法:
select sum(quantity) as 别名 from order_list select sum(quantity) 别名 from order_list select 别名1=sum(quantity),别名2=... from order_list如果列的名字不确定的话,还可以用 case when then 语句进行循环取列名的。
参考博客:http://www.cnblogs.com/lidabo/articles/2030972.html
欢迎大家访问handsomecui的博客: