SQL 经典题型解答(5)

SQL 经典题型解答(5)

@(数据库)

20、查询学生的总成绩并进行排名

SELECT
    a.s,
    a.Sname,
    SUM( b.score ) AS sumscore,
    RANK() OVER (ORDER BY SUM( b.score ) DESC) AS ‘名次‘
FROM
    student a,
    sc b
WHERE
    a.s = b.S
GROUP BY
    a.S,a.Sname

详解:

没有用到新的知识。

程序运行结果:



21、查询不同老师所教不同课程平均分从高到低显示

SELECT
    a.C,
    a.Cname,
    c.Tname,
    avg( b.score ) AS avgscore
FROM
    course a,
    sc b,
    teacher C
WHERE
    a.C = b.C
    AND a.T = c.T
GROUP BY
    a.c,
    a.Cname,
    c.Tname
ORDER BY
    avgscore DESC

程序运行结果:



22、查询所有课程的成绩第2名到第3名的学生信息及该课程成绩

SELECT
    a.*,
    b.c,
    b.score
FROM
    student a,
    (
    SELECT
        *
    FROM
        ( SELECT s, c, score, ROW_NUMBER ( ) OVER ( ORDER BY score DESC ) AS mc FROM sc WHERE C = ‘01‘ ) a
    WHERE
        mc BETWEEN 2
        AND 3 UNION ALL
    SELECT
        *
    FROM
        ( SELECT s, c, score, ROW_NUMBER ( ) OVER ( ORDER BY score DESC ) AS mc FROM sc WHERE C = ‘02‘ ) b
    WHERE
        mc BETWEEN 2
        AND 3 UNION ALL
    SELECT
        *
    FROM
        ( SELECT s, c, score, ROW_NUMBER ( ) OVER ( ORDER BY score DESC ) AS mc FROM sc WHERE C = ‘03‘ ) c
    WHERE
        mc BETWEEN 2
        AND 3
    ) b
WHERE
    a.s = b.s
ORDER BY
    c

详解;

通过查询表 sc 可以根据每一个课程的成绩生成表格。然后查出排名在 2 和 3 之间的学生的学号、课程、以及课程成绩,在联合表 stuedent 得到血色和功能的信息。

由于课程较少,可以采用这种方法,但是如果课程数多就不可以,应该采用 SQL 循环,

如果题目要求中没有声明选取课程几,代码中就不应该出现 ’01‘,’02‘,’03’ 这样的课程。

SQL UNION 操作符用法

程序运行结果:

原文地址:https://www.cnblogs.com/wobu/p/9637601.html

时间: 2024-10-15 08:22:07

SQL 经典题型解答(5)的相关文章

SQL 经典题型解答(4)

SQL 经典题型解答(4) 18.查询各科成绩最高分.最低分和平均分:以如下形式显示:课程ID,课程name,最高分,最低分,平均分,及格率,中等率,优良率,优秀率 及格为>=60,中等为:70-80,优良为:80-90,优秀为:>=90 SELECT a.C, a.Cname, MAX( b.score ), MIN( b.score ), CAST( AVG( b.score ) AS DECIMAL ( 18, 2 ) ) pingqunfen, CAST( ( SELECT COUNT

SQL 经典题型解答(6)

SQL 经典习题解答(6) 23.统计各科成绩各分数段人数:课程编号,课程名称,[100-85],[85-70],[70-60],[0-60]及所占百分比 SELECT t1.*, t2.all_num, CONCAT( ROUND( t1.num / t2.all_num * 100, 2 ), '%' ) '百分比' FROM ( SELECT m.C, m.Cname, ( CASE WHEN n.score >= 85 THEN '85-100' WHEN n.score >= 70

SQL 经典语句

15题需要再分析.没弄懂 使用scott/tiger用户下的emp表和dept表完成下列练习, 表的结构说明如下 emp员工表(empno员工号/ename员工姓名/job工作/mgr上级编号/hiredate受雇日期/sal薪金/comm佣金/deptno部门编号) dept部门表(deptno部门编号/dname部门名称/loc地点) 工资 = 薪金 + 佣金 1.列出至少有一个员工的所有部门. 2.列出薪金比“SMITH”多的所有员工. 3.列出所有员工的姓名及其直接上级的姓名. 4.列出

Oracle SQL 经典查询练手第三篇

Oracle SQL 经典查询练手第三篇 本文分享的是Oracle SQL的经典查询第三篇,仅仅是作者自己的见解,如有问题,希望您给出建议或者方法.同时,欢迎广大读者们补充,如果您有经典的查询方式也可以拿出来我们共同分享,共同成长,共同进步. 本计算机上使用的是Oracle 11.2.0版本,使用scott用户登陆.使用的是系统自带的表. 表结构: describe employees; describe departments; describe locations; select *from

针对JS经典题型对全局变量及局部变量的理解浅谈

第一次写博,还蛮激动... 看到了三题经典题型,经老师讲解后,对此类题目有了更深刻的认识 就我目前的认识对此题进行总结.如有错误,敬请指正 首先,我们先明确一下JS引擎的工作步骤: js引擎工作分为两步: 1.将这个js中的变量和函数声明保存到当前(注意,是当前)执行环境的变量对象中 2.再逐行解析执行js.当看到一个函数或一个变量时,js引擎就会去查询 这个函数或变量是在哪里定义的 查询的方式有两种: a.按作用域链查找:先在当前执行环境查询这个变量或程序,如果没有,就到父执行环境 中查找,还

sql经典语句大全

SQL Server提供了大量的函数, 但是在一些常见的如, 字符串拆分, 字符提取,过滤等没有对应的处理, 本帖主要收集一些常见的函数, 整理如下: ------------------------------ http://topic.csdn.net/u/20080306/23/d3c100f2-cda1-4efa-927d-f1f7968884ce.html /* 功能:拆分字符串. 作者:..... */ http://topic.csdn.net/u/20080724/11/dacb

DP经典题型:石子合并问题

本周集训专题为DP系列,一个经典的系列便是石子归并问题. (1)有N堆石子,现要将石子有序的合并成一堆,规定如下:每次只能移动相邻的2堆石子合并,合并花费为新合成的一堆石子的数量.求将这N堆石子合并成一堆的总花费最小(或最大). 这是石子归并的简化版本,石子处于一排.由于发现只能是相邻的2堆石子进行归并.我们会发现,贪心算法在此处便失去作用,局部最优解并不能带来整体最优解. 因此,不难让我们想到,此题应该采取DP(dynamic Programing)来求其最优解. 动态规划常常采取从部分整体最

【笔试/面试】SQL 经典面试题

基本概念 (1)any/all,构成 where 子句的条件判断,any:表示或(or)的概念,all:则表示与(and)的概念,这两个关键字的出现是为了语句的简化: (2)先分组再做聚合,逻辑上也应当如此,聚合(取最值)之后便无分组的必要: select region, sum(population), sum(area) from bbc group by region; 1 (3)group by having,having 对分组后的数据进行筛选,这是 where 所做不到的: 1. 不

收集的sql经典语句

经典SQL语句大全 一.基础1.说明:创建数据库CREATE DATABASE database-name 2.说明:删除数据库drop database dbname3.说明:备份sql server--- 创建 备份数据的 deviceUSE masterEXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'--- 开始 备份BACKUP DATABASE pubs TO testBack 4.说明:创