sql-SQL测试题:查询每门课,女生成绩比男生成绩好的学生

问题描述

SQL测试题:查询每门课,女生成绩比男生成绩好的学生

--SQL测试题:查询每门课,女生成绩比男生成绩好的学生
--sid 学号
--sname 学生姓名
--sex 性别 f女 m男
--cid 课程编码
--grade 成绩
create table student(sid varchar(100), sname varchar(100), sex varchar(1));
create table sc(sid varchar(100), cid varchar(100), grade int);

insert into student(sid, sname, sex) values ('f1', '', 'f');
insert into student(sid, sname, sex) values ('f2', '', 'f');
insert into student(sid, sname, sex) values ('f3', '', 'f');
insert into student(sid, sname, sex) values ('f4', '', 'f');
insert into student(sid, sname, sex) values ('f5', '', 'f');
insert into student(sid, sname, sex) values ('f6', '', 'f');
insert into student(sid, sname, sex) values ('f7', '', 'f');

insert into student(sid, sname, sex) values ('m1', '', 'm');
insert into student(sid, sname, sex) values ('m2', '', 'm');
insert into student(sid, sname, sex) values ('m3', '', 'm');
insert into student(sid, sname, sex) values ('m4', '', 'm');
insert into student(sid, sname, sex) values ('m5', '', 'm');
insert into student(sid, sname, sex) values ('m6', '', 'm');
insert into student(sid, sname, sex) values ('m7', '', 'm');

insert into sc(sid, cid, grade) values ('f1', 'c1', 100);
insert into sc(sid, cid, grade) values ('f2', 'c1', 90);
insert into sc(sid, cid, grade) values ('f3', 'c1', 89);
insert into sc(sid, cid, grade) values ('f4', 'c1', 70);
insert into sc(sid, cid, grade) values ('f5', 'c1', 60);
insert into sc(sid, cid, grade) values ('f6', 'c1', 50);
insert into sc(sid, cid, grade) values ('f7', 'c1', 40);

insert into sc(sid, cid, grade) values ('m1', 'c1', 99);
insert into sc(sid, cid, grade) values ('m2', 'c1', 89);
insert into sc(sid, cid, grade) values ('m3', 'c1', 79);
insert into sc(sid, cid, grade) values ('m4', 'c1', 69);
insert into sc(sid, cid, grade) values ('m5', 'c1', 59);
insert into sc(sid, cid, grade) values ('m6', 'c1', 49);
insert into sc(sid, cid, grade) values ('m7', 'c1', 39);

insert into sc(sid, cid, grade) values ('f1', 'c2', 100);
insert into sc(sid, cid, grade) values ('f2', 'c2', 90);
insert into sc(sid, cid, grade) values ('f3', 'c2', 89);
insert into sc(sid, cid, grade) values ('f4', 'c2', 70);
insert into sc(sid, cid, grade) values ('f5', 'c2', 60);
insert into sc(sid, cid, grade) values ('f6', 'c2', 50);
insert into sc(sid, cid, grade) values ('f7', 'c2', 40);

insert into sc(sid, cid, grade) values ('m1', 'c2', 99);
insert into sc(sid, cid, grade) values ('m2', 'c2', 89);
insert into sc(sid, cid, grade) values ('m3', 'c2', 79);
insert into sc(sid, cid, grade) values ('m4', 'c2', 69);
insert into sc(sid, cid, grade) values ('m5', 'c2', 59);
insert into sc(sid, cid, grade) values ('m6', 'c2', 49);
insert into sc(sid, cid, grade) values ('m7', 'c2', 39);

求简单SQL语句

解决方案

你这成绩好,好没标准,下面是同一门课女生至少比一个男生成绩好

 select distinct sid,sname,sex from(
select student.sid,student.sname,student.sex
,(select count(*) from sc,student where student.sid=sc.sid and student.sex='f' and grade<t.grade and sc.cid=t.cid) allnum
from student,sc t
where student.sid=t.sid and student.sex='m'
) where allnum>0

解决方案二:

这个给的条件不够啊,怎么叫女生成绩比男生成绩好?

解决方案三:

查询每门课里女生高于所有男生成绩的sql

 SELECT student.sid,
       student.sname,
       student.sex,
       sc.cid,
       sc.grade
  FROM student,
       sc,
       (  SELECT sc.cid, MAX (grade) grade
            FROM student, sc
           WHERE student.sid = sc.sid AND student.sex = 'm'
        GROUP BY sc.cid) A
 WHERE     student.sid = sc.sid
       AND sc.cid = A.cid
       AND STUDENT.SEX = 'f'
       AND sc.grade > A.grade
时间: 2024-11-17 23:57:33

sql-SQL测试题:查询每门课,女生成绩比男生成绩好的学生的相关文章

剖析SQL Server 2005查询通知之基础篇

在本系列文章中,我们将深入探讨如何把.NET 2.0和SQL Server 2005的查询通知特征联合起来,以便通知应用程序何时关键数据发生变化进而达到消除反复查询数据库的目的. 一.引言 数据库应用程序的典型问题之一是更新陈旧的数据. 设想有一个典型的显示产品及其分类的电子商务网站.一个供应商的产品列表很可能并不经常发生变化,而其分类列表甚至更不会频繁更改.然而,在用户每次浏览该网站时,必须从数据库中反复查询这些列表.这显然是一种典型的低效资源利用,开发者和架构师都在绞尽脑汁想办法以减少这种浪

PL/SQL DEVELOPER中查询结果复制出来中文乱码如何解决

PL/SQL DEVELOPER中查询结果导出到EXCEL时中文显示正常,但直接复制出来中文显示为乱码,如何? 解决方案:切换到中文输入法状态,再复制,即可. 本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/database/Oracle/

如何使用SQL Server数据库查询累计值

本文介绍如何使用SQL Server数据库查询累计值,举例分析. 有这样一个要求,它要创建一个SQL Server查询,其中包括基于事件时刻的累计值.典型的例子就是一个银行账户,因为你每一次都是在不同的时间去存钱和取钱.对任意一个账户来说,在某个时间点都要算出它的借(存款)和贷(取款)之和.每一笔交易之后,你都想知道当前的余额. 列表A创建了这样一个表格的简单的例子. CREATETABLE [dbo].[BankAccount]([TransactionID] [int] IDENTITY(1

优化SQL Server数据库查询方法

SQL Server数据库查询速度慢的原因有很多,常见的有以下几种: 1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2.I/O吞吐量小,形成了瓶颈效应. 3.没有创建计算列导致查询不优化. 4.内存不足 5.网络速度慢 6.查询出的数据量过大(可以采用多次查询,其他的方法降低数据量) 7.锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷) 8.sp_lock,sp_who,活动的用户查看,原因是读写竞争资源. 9.返回了不必要的行和列 10.查询语句不好,没有优

实例简析SQL嵌套子查询

  实例简析SQL嵌套子查询: 一些初级程序员常常对SQL语法中的子查询,由其对嵌套子查询(子查询中包含一个子查询)的使用比较生疏,本文就此做一个基本讲解,相信新手会有一定收获. 使用子查询的原则 1.一个子查询必须放在圆括号中. 2.将子查询放在比较条件的右边以增加可读性. 子查询不包含 ORDER BY 子句.对一个 SELECT 语句只能用一个 ORDER BY 子句, 并且如果指定了它就必须放在主 SELECT 语句的最后. ORDER BY 子句可以使用,并且在进行 Top-N 分析时

sql server投影查询、选择查询

  --简单查询 --投影查询 /* 简单查询关键字说明: all :指定显示所有的记录,包括重复行.all是默认设置. distinct :指定显示所有的记录,但不包括重复行. top n [percent]:指定从结果中返回前n行,或者前n%的数据记录 * : 表示所有记录 */ --选择一个表中指定的列 --查询学生表中"姓名","年龄" select Sname , Sage from Student --查询学生表中的所有记录 select * from

sql 优化 嵌套-SQL 查询优化 嵌套查询

问题描述 SQL 查询优化 嵌套查询 sql server sql如下:select *from ( select subjectCOUNT(Subject) as cout from Questions where UserID ='banianji' and AskDate>'2011-01-01' and AskDate<'2014-01-01' group by Subject ) as a where a.cout= ( select MAX(cout)from ( select s

为什么sql中模糊查询左百分号 无法用索引

问题描述 为什么sql中模糊查询左百分号 无法用索引 为什么sql中模糊查询左百分号 无法用索引,右百分号 却可以用索引? 解决方案 sql 中模糊查询转义 escape 解决方案二: 数据库一般都是前缀索引,所以支持模糊匹配在后面

sql用IN查询速度很求教各位高手慢,

问题描述 sql用IN查询速度很求教各位高手慢, CTRL+L提示缺少索引,要怎么优化?有没有别的代替?谢谢各位 解决方案 sql的where语句中查询某个时间之后的话速度异常慢 解决方案二: 你把代码贴出来看看啊,你只说很慢能给你什么好的建议 解决方案三: IN所查找的那列建立索引等,而且可以用数据库性能工具查看一下性能瓶颈在什么地方 解决方案四: 要看 in所属字段类型及表里存储条数,要是多的话,在字段上加个索引可以吗 解决方案五: 要看 in所属字段类型及表里存储条数,要是多的话,在字段上