有三个表:
学生表:student 字段:stuID,chinesename,sex,scholarship(奖学金)
成绩表:grade 字段:graID,studID,courceID,grade
课程表:cource 字段:courceID,courceName,xuefen
求:查询分数都在90分以上的学生的stuID,chinesename
create table student(stuID int,chinesename nvarchar(20),sex int,scholarship money)
go
insert into student select 1,'allen',1,500 union all
select 2,'tom',1,0 union all
select 3,'jordan',1,1000 union all
select 4,'kobe',1,0
go
create table grade(graID int,stuID int,courceID int,grade decimal(4,1))
insert into grade select 1,4,1,80.8 union all
select 2,4,2,90 union all
select 3,4,3,100 union all
select 4,3,1,55 union all
select 5,3,2,86 union all
select 6,3,3,90.5 union all
select 7,1,1,95 union all
select 8,1,2,99.5 union all
select 9,1,3,96 union all
select 10,2,1,60 union all
select 11,2,2,66 union all
select 12,2,3,68
go
create table cource(courceID int,courceName nvarchar(20),xuefen int)
insert into cource select 1,'语文',5 union all
select 2,'数学',6 union all
select 3,'外语',6
select * from student where stuID in(
select stuID from grade
where grade>90
group by stuid having count(*)=(select count(*) from cource))
select s.stuID,s.chinesename from student s inner join grade g on s.stuID=g.stuID inner join cource c on c.courceID=g.courceID
where g.grade>=90 group by s.stuID,s.chinesename having count(g.courceID)=(select count(*) from cource)
学员分数表
姓名 科目 分数
zhang san 语文 60
lisi 语文 71
wangwu 语文 61
zhaoliu 语文 90
.....
所得结果
姓名
zhang san 语文 第四名
lisi 语文 第二名
wangwu 语文 第三名
zhaoliu 语文 第一名
想破头也想不出来,敬请高人指点,谢谢!
DECLARE @T TABLE(NAME VARCHAR(50),SUBJECT VARCHAR(20),GRADE INT)
INSERT @T SELECT ’zhang san’,’语文’,60
UNION ALL SELECT ’lisi’,’语文’,71
UNION ALL SELECT ’wangwu’,’语文’,61
UNION ALL SELECT ’zhaoliu’,’语文’,90
SELECT
NAME,
SUBJECT,
PM=(SELECT COUNT(1) FROM @T WHERE GRADE>=A.GRADE)
FROM @T A
SELECT * INTO #TB_SCORE
FROM
(
SELECT ’zhang san’姓名,’语文’课程,’60’成绩
UNION ALL
SELECT ’lisi’姓名,’语文’课程,’71’成绩
UNION ALL
SELECT ’wangwu’姓名,’语文’课程,’61’成绩
UNION ALL
SELECT ’zhaoliu’姓名,’语文’课程,’90’成绩
UNION ALL
SELECT ’youran’姓名,’语文’课程,’60’成绩
)A
SELECT * FROM #TB_SCORE
SELECT 姓名,课程,#TB_SCORE.成绩,’第’+CONVERT(VARCHAR(2),名次)+’名’AS 名次
FROM #TB_SCORE
INNER JOIN
(
SELECT 成绩,名次=(SELECT COUNT(1) FROM(SELECT DISTINCT 成绩 FROM #TB_SCORE)B WHERE B.成绩>=A.成绩)
FROM
(SELECT DISTINCT 成绩 FROM #TB_SCORE)A
)T ON T.成绩 = #TB_SCORE.成绩
ORDER BY 名次
select 姓名=a.name,科目=a.kemo,
名次=case when (select count(fenshu)from Type where fenshu>a.fenshu)+1=1 then ’第一名’
when (select count(fenshu)from Type where fenshu>a.fenshu)+1=2 then ’第二名’
when (select count(fenshu)from Type where fenshu>a.fenshu)+1=3 then ’第三名’
when (select count(fenshu)from Type where fenshu>a.fenshu)+1=4 then ’第四名’
end from Type as a
京尚良楷诚网络 sql笔试题 |
时间:2009年1月13日 作者: |
|
群上的兄弟,谁帮忙做下这个题目: 一个简单的表TABLE 有100条以上的信息,其中包括: 产品 颜色 数量 产品1 红色 123 产品1 蓝色 126 产品2 蓝色 103 产品2 红色 NULL 产品2 红色 89 产品1 红色 203 。。。。。。。。。。。。 请用SQL语句完成以下问题: 1。按产品分类,仅列出各类商品中红色多于蓝色的商品名称及差额数量: 2。按产品分类,将数据按下列方式进行统计显示 产品 红色 蓝色 按产品分类,将数据按下列方式进行统计显示 create table test(产品 varchar(10),颜色 varchar(10),数量 int) insert test select ’产品1’,’红色’,123 insert test select ’产品1’,’蓝色’,126 insert test select ’产品2’,’蓝色’,103 insert test select ’产品2’,’红色’,NULL insert test select ’产品2’,’红色’,89 insert test select ’产品1’,’红色’,203 select * from test select 产品,红色=sum(case when 颜色=’红色’ then 数量 else 0 end), 蓝色=sum(case when 颜色=’蓝色’ then 数量 else 0 end) from test group by 产品 select 产品,sum(case when 颜色=’红色’ then 数量 else 0 end)-sum(case when 颜色=’蓝色’ then 数量 else 0 end) as 差额 from test group by 产品 having sum(case when 颜色=’红色’ then 数量 else 0 end)>sum(case when 颜色=’蓝色’ then 数量 else 0 end) 如果只有两种颜色也可以这样: 1: select 产品,sum(IsNull(数量,0) * Replace(replace(颜色,’红色’,1),’蓝色’,-1)) from test group by 产品 having sum(IsNull(数量,0) * Replace(replace(颜色,’红色’,1),’蓝色’,-1))>0 2: select 产品,sum(IsNull(数量,0) * Replace(replace(颜色,’红色’,1),’蓝色’,0)) ,sum(IsNull(数量,0) * Replace(replace(颜色,’红色’,0),’蓝色’,1)) from test group by 产品 having sum(IsNull(数量,0) * Replace(replace(颜色,’红色’,1),’蓝色’,-1))>0 create table test(产品 varchar(10),颜色 varchar(10),数量 int) insert test select ’产品1’,’红色’,123 insert test select ’产品1’,’蓝色’,126 insert test select ’产品2’,’蓝色’,103 insert test select ’产品2’,’红色’,NULL insert test select ’产品2’,’红色’,89 insert test select ’产品1’,’红色’,203 --1 select 产品,sum(a) from ( select 产品,-数量 as a from test where 颜色=’蓝色’ union all select 产品,数量 as a from test where 颜色=’红色’ ) as b group by 产品 having sum(a)>0 --2 select 产品,红色=sum(case when 颜色=’红色’ then 数量 else 0 end), 蓝色=sum(case when 颜色=’蓝色’ then 数量 else 0 end) from test group by 产品 --表怪怪的 |
相关推荐
常见的SQL笔试选择题含答案.docx,常见的SQL笔试选择题含答案.docx 常见的SQL笔试选择题含答案.docx,常见的SQL笔试选择题含答案.docx
SQL笔试题库。
题目包含:1.基本SQL-SELECT语句 2.过滤和排序数据 3.单行函数 4.多表查询 5.分组函数 6.子查询 7.创建和管理表 8.数据处理 9.约束 10.视图 11.数据库对象 12.企业sql笔试题目 等
SQL笔试题适合初学者以及即将面临找工作的程序员,不错非常有用
经典sql练习,几道经典的SQL笔试题题目。sql就在于多多练习
这个笔试题对于新手来说绝对是好东西,请大伙放心下载
1到3年工作经验的 sql面试笔试题(通过面试360,华为,阿里收集)
整理的一些SQL笔试题,主要是用于公司应聘初级人员的试题,大家可以一起做一下。
sql 笔试 经典, 比较小巧的技术。
sql 笔试题包含了sql的基础知识 有好几种题型 有答案 个人整理的
以下是一些常见的SQL笔试题题目及其解析:查询语句: 题目:请编写一个SQL查询语句,从表"Customers"中选取所有姓为"Smith"的顾客记录。 解析:使用SELECT语句配合WHERE子句进行筛选。 聚合函数: 题目:请编写一个...
48道常见的sql笔试题,基本涵盖所有考试的题了
十家互联网大厂SQL笔试题
常见sql笔试题.pdf
SQL笔试选择题.doc
asp.net/java/javascript/sql笔试题库(有答案)
整理的一些SQL笔试题,主要是用于公司应聘初级人员的试题,大家可以一起做一下。
SQL笔试题解答,含答案.。。。。。。。。。。。。。。
2022届-实施工程师-SQL笔试题.docx
10家互联网大厂SQL笔试题目和答案合集,用来练手、学习、测试等等都非常适合