存储过程经典例题演示:按科目统计分数段的人数;把各科成绩显示在一条记录里。

第四章 存储过程 案例课堂练习 /案例 :创建一个显示雇员总人数的存储过程。 / create or replace procedure pro_empcou is v_count number; begin select count(*) into v_count from emp; dbms_output.put_line(‘总的雇员人数是:’||v_count); end; 存储过程已经创建,接下来... 阅读详情

假设有张学生成绩表(CJ)如下 
[姓名] [学科] [成绩] 
张三 语文 80 
张三 数学 86 
张三 英语 75 
李四 语文 78 
李四 数学 85 
李四 英语 78 
...

现有需求如下:
(1)要求按科目统计分数段的人数。显示结果为:
[成绩]      [人数]
0<成绩<60      0 
60<成绩<80     0 
80<成绩<100    5
(2)要求根据姓名,把各科成绩显示在一条记录里。显示结果如下:
姓名             语文       数学       英语     总成绩
---------- ---------- ---------- ---------- ----------
李四               78         85         78        241
张三               80         86         75        241
总分              158        171        153       482 

使用存储过程(显示结果时可用dbms_output打印出来)实现这两个功能。

create table CJ(
  stuname VARCHAR2(50),
  subject VARCHAR2(50),
  score   NUMBER(8)
);
insert into CJ (stuname, subject, score) values ('张三', '语文', 80);
insert into CJ (stuname, subject, score) values ('张三', '数学', 86);
insert into CJ (stuname, subject, score) values ('张三', '英语', 75);
insert into CJ (stuname, subject, score) values ('李四', '语文', 78);
insert into CJ (stuname, subject, score) values ('李四', '数学', 85);
insert into CJ (stuname, subject, score)values ('李四', '英语', 78);
commit;

select * from cj;

1.按科目统计分数段的人数
create or replace procedure countScore(
    v_subject  in   cj.subject%type
)is
    less60 number(8);
    less80 number(8);
    less100 number(8);
begin
    select count(score) into less60 from cj where subject=v_subject and score<60;
    select count(score) into less80 from cj where subject=v_subject and score>=60 and score<80;
    select count(score) into less100 from cj where subject=v_subject and score>=80;
    
    dbms_output.put_line('[成绩]      [人数]');
    dbms_output.put_line('0<成绩<60      '||less60);
    dbms_output.put_line('60<成绩<80      '||less80);
    dbms_output.put_line('80<成绩<100      '||less100);
    
end;

set serveroutput on;

exec countScore('语文');


select 
    count(case when score<60 then 1 end) less60,
    count(case when score>=60 and score<80 then 1 end) less80,
    count(case when score>=80 then 1 end) less100
from cj where subject='语文'


2.要求根据姓名,把各科成绩显示在一条记录里。显示结果如下
姓名             语文       数学       英语   
---------- ---------- ---------- ---------- 
李四               78         85         78       
张三               80         86         75        

select * from cj;    

select stuname,
    max(case when subject='语文' then score end) 语文,
    max(case when subject='数学' then score end) 数学,
    max(case when subject='英语' then score end) 英语
from cj 
group by stuname;


create or replace procedure showScore
is
    cursor allscore is select stuname,
                            max(case when subject='语文' then score end) chinese,
                            max(case when subject='数学' then score end) math,
                            max(case when subject='英语' then score end) english
                        from cj  group by stuname;
    v_name cj.stuname%type;
    chinese_score cj.score%type;
    math_score cj.score%type;
    english_score cj.score%type;
    totoal_chinese_score cj.score%type:=0;
    totoal_math_score cj.score%type:=0;
    totoal_english_score cj.score%type:=0;
    
begin
    dbms_output.put_line('姓名          语文       数学       英语       总成绩');
    open allscore;
    loop
        fetch allscore into v_name,chinese_score,math_score,english_score;
        if allscore%notfound then exit;end if;
        dbms_output.put(v_name||'            ');
        dbms_output.put(chinese_score||'      ');
        dbms_output.put(math_score||'      ');
        dbms_output.put(english_score||'      ');
        dbms_output.put((chinese_score+math_score+english_score));
        
        dbms_output.put_line('');
        
        totoal_chinese_score:=totoal_chinese_score+chinese_score;
        totoal_math_score:=totoal_math_score+math_score;
        totoal_english_score:=totoal_english_score+english_score;
        
        
    end loop;
    if allscore%isopen then close allscore;end if;
    dbms_output.put_line('总分              '||totoal_chinese_score||'        '||totoal_math_score||'        '||totoal_english_score||'       '||(totoal_chinese_score+totoal_math_score+totoal_english_score));
end;

exec showScore
 

Python学习笔记(2)流程循环控制语句 阅读详情

相关推荐

Qt 5.12.8在Linux下编译qtvirtualkeyboard模块,我踩过的那些坑(附完整解决方案)

本文详细介绍了在Linux系统下为Qt 5.12.8单独编译qtvirtualkeyboard模块的完整解决方案。通过分析模块缺失原因、提供精准的编译步骤和常见问题处理,帮助开发者高效解决虚拟键盘模块缺失问题,避免重新编译整个Qt源码的繁琐过程。

weixin_29248611的博客 463

实验三 存储过程和函数

创建一个函数,以员工号为参数,返回该员工的工资。 create or replace function f_num_sal(vempno in emp.empno%type) return number as vsal number; begin select sal into vsal from emp where empno=vempno; return vsal; end; / 创建...

weixin_43342945的博客 6017

深入解析6T SRAM的读写机制与性能优化

本文深入解析了6T SRAM的基本结构与核心工作原理,详细阐述了其读写操作的具体时序与机制。文章重点探讨了在先进工艺下面临的读写稳定性、写入能力等性能挑战,并系统介绍了写入辅助与读取辅助等关键优化技术,旨在提升SRAM的可靠性与整体性能。

weixin_29205061的博客 1227

SQL面试题

下列语句部分是Mssql语句,不可以在access中使用。   SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT) DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK) 首先,简要介绍基础语句: 1、说明:创建数据库 CREATE DATA

中辽普坦的专栏 2249

实战解析:如何用Python逆向破解FastMoss的TikTok数据加密签名(附完整代码)

本文详细解析了如何用Python逆向破解FastMoss平台的TikTok数据加密签名机制,包括MD5加密算法和JS逆向分析。通过完整的Python代码示例,帮助开发者理解签名生成原理并实现自动化请求,提升数据获取能力。

weixin_30955617的博客 561

什么是PMOS?什么是NMOS?两者有什么区别?

这个电压差被称为阈值电压(Vth),通常为0.7V至2V(低压NMOS)或4V至10V(功率NMOS)。当Vgs(栅极-源极电压)大于Vth时,沟道中的电子被吸引到栅极下方,形成导电通路,使电流可以从漏极流向源极。NMOS与PMOS的结构类似,都由三大部分组成:栅极(Gate)、源极(Source)和漏极(Drain)。由于NMOS在开启时,电子是主要的载流子,电子的迁移率比空穴高,因此NMOS通常具有更低的导通电阻(Rds(on)),这使其成为高速开关电路中的首选。它的沟道由电子(负载子)传导。

硅农深芯的博客 6447

mysql基础知识-需求案例1

”种一棵树最好是十年前,其次是现在“,结合个人十多年IT基础架构领域摸爬滚打的经验来看,数据库领域潜力无限,大有可为。运维领域知识面需要广,更需要专,数据库是我选择做专做深的方向。 DDL-数据库操作 -- 查看所有数据库实例show databases ;-- 创建数据库create database my_test;-- 使用具体数据库实例use my_test;-- 显示数据库实例下所有表show t

qq_20617201的博客 1292

在 Dify 平台部署一个 知识库问答(KBQA) 工作流

加强检索约束,Prompt 加限制(“仅基于知识库回答”):启用缓存,使用轻量级 LLM(如 Mistral-7B)(OpenAI Embedding、M3E、BGE等)(支持 PDF/TXT/Markdown/Word)(GPU/CPU 资源,用于向量数据库和模型推理)企业内部文档(PDF/Word/Excel)网页爬取数据(Markdown/HTML)分块大小(太小→信息碎片化,太大→噪声多)相似度阈值(太高→漏检,太低→噪声多)(是否返回正确文档)结构化数据(数据库/API)

井底小蛙的博客 1521

mysql中的sql行列转换_一些sql 语句(行列转换等) [转载]

1. 行列转换--普通假设有张学生成绩表(CJ)如下Name Subject Result张三 语文 80张三 数学 90张三 物理 85李四 语文 85李四 数学 92李四 物理 82想变成姓名 语文 数学 物理张三 80 90 85李四 85 92 82declare @sql varchar(4000)set @sql = 'select Name'select @sql = @sql + ...

weixin_39763902的博客 299

带挂牵引车倒车运动模型推导及仿真实现

半挂牵引车在倒车时,由于鞍座主销的连接限制,其运动方式与乘用车有显著差异。例如,乘用车在右侧倒车入库时,只需确定泊车起点并将方向盘向右打死。相反,牵引车在倒车时需要先向左转方向盘,当铰接角达到防折叠的临界值时,再将方向盘向右转回,以调整牵引车与挂车至直线状态,完成泊车入库。本研究旨在建立一个基于牵引车带挂车倒车运动学模型,该模型基于以下假设: 道路在车辆行驶过程中保持平坦,无凹凸不平; 车辆以低速行驶,且在运行过程中车身不发生侧倾或俯仰; 行驶过程中,轮胎无变形,无侧向滑动,且不产

jianmo的博客 2697

2026年摩尔线程数字IC面试试卷带答案

本文摘要: 该试卷为数字IC设计笔试,满分120分,时长90分钟,包含单选题、波形分析题、多选题和代码设计题。重点考察时序约束(如set_false_path)、建立/保持时间、逻辑化简、复位机制、AXI协议、半导体工艺、状态机、GPU架构等核心知识点。多选题涉及异步FIFO设计、Verilog综合、亚稳态处理、C++关键字和低功耗技术。代码题要求实现单比特信号去毛刺电路,需稳定4个时钟周期才输出。试题解析详细,标注了企业面试高频考点,如摩尔线程自研的MUSA架构和花港GPU架构特点。整体内容专业性强,覆盖

Open 99

数据库系统概论 第五章课后习题(部分)+ 存储过程习题

本文是《数据库系统概论》的第五章(数据库完整性)的部分课后习题和存储过程习题,题目来源:【2019-2020春学期】数据库作业14:第五章: 数据库完整性 习题 + 存储过程 ????共有两题数据库完整性习题6存储过程习题2 数据库完整性习题6 假设有下面两个关系模式: 职工(职工号,姓名,年龄,职务,工资,部门号),其中职工号为主码: 部门(部门号,名称,经理名,电话),其中部门号为主码。 用SQL...

Henry_626的博客 1万+

Apple Store 上架过包:iOS审核4.3被拒原因分析与解决修改方案

Apple Store 上架过包:iOS审核4.3被拒原因分析与解决修改方案

专业解决各种上架过包问题,专业团队专业处理 751

基于Java web在线考试系统

试题包括选择题和填空题,选择题包括试题内容、各选项、参考答案、试题类型、分值、所属科目、录入时间等,填空题包括试题内容、参考答案、试题类型、分值、所属科目、录入时间等;判断题包括试题内容、参考答案,试题类型、所属科目、分值、录入时间等;组卷:供教师用户使用,教师可以根据考试科目,从题库中选择一些符合条件的试题,形成一份试卷,为了方便教师组卷,应提供方便的查询功能,按照科目、题型、录入时间等进行查询,使教师能查询不同要求的试题,组成试卷,试卷信息包括试卷名称、试卷类型、科目、试卷分值、各种题型数量及分值等。

编程无忧 607

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

待研究 case when 和decode

 假设有张学生成绩表(CJ)如下 [姓名] [学科] [成绩] 张三 语文 80 张三 数学 86 张三 英语 75 李四 语文 78 李四 数学 85 李四 英语 78 现有需求如下:(1)要求统计分数段的人数。显示结果为:[成绩]      [人数]0&lt;成绩&lt;60      0 60&lt;成绩&lt;80      380&lt;成绩&lt;100    3 with w as...

weixin_34370347的博客 108

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

数据库—第五章课后题

对学生-课程数据库编写存储过程,完成下述功能 (1)统计离散数学的成绩分布情况,即按照各分数段统计人数 create table Lisan( Score_lisan char(20), Count_lisan int ); -----首先创造统计离散数学的表格,其中包含了int的人数count和score的分数段 insert into Course values('8','离散数学',NULL,4)--向Course中添加离散数学 insert into SC values('201

weixin_51599965的博客 3617

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

C程序--输入某班学生某课程成绩,用函数统计不及格人数

#include <stdio.h> #include <stdlib.h> #define N 40 int ReadScore(int score[]); int LowScore(int score[] ,int n); main() { int n,score[N],count; n = ReadScore(score); printf(...

naturly的博客 6060

统计在线人数还有会员数的一个存储过程

关于人数统计有人说是用application的概念。不过因为要涉及到每个分版块每个版块的人数,所以呢。我还是没有用这样的办法。这样办法也不能完全的统计出来。为此我写了个存储过程 其中Online_ID 代表了用户的ID,我用户ID是同用户名分开的啦。这个ID也是标志用户唯一的一个值。所以我作为传入参数进入onlineid , 其中onlinename 表示了用户名,其中对于游客,我

xiong1000 only focus on asp.net 2.0 1838

列出每位学生的各科成绩,要求输出格式:姓名、语文成绩、数学成绩、英语成绩

根据所给出的表信息,列出每位学生的各科成绩,要求输出格式:姓名、语文成绩、数学成绩、英语成绩 下面我们来看一下具体的写法和需要注意的地方:

m0_53856016的博客 1943

使用二维数组保存学生成绩并操作

//求三个学生总成绩的平均值,以及找出一个学生的成绩,使用二维数组指针 #include<stdio.h> int main(){ void aver(float *p,int n);//求总成绩 void search(float (*p)[4],int n);//找出序号为n个学生的成绩 float cj[3][4]={65,67,70,60,80,87,90,81,90,99,100,98}; aver(*cj,12); search(cj,2); } void aver(

weixin_45819533的博客 5210

c语言字符数组成绩统计问题,c语言编程题 统计成绩数组score中各分数段的人数并存储到数组num中。分数段60~69,70...

满意答案white丨白夜2014.12.04采纳率:59%等级:12已帮助:7254人#include int main(){int num[5]={0};int score[123]={93,85,77,68,59,43,94,75,98};int i;for(i=1;i<=9;i++){if(score[i]>=90 && score[i]<=99)n...

weixin_42303568的博客 1883

存储过程实验

一、实验目的及要求 1.掌握用户存储过程的创建操作。 2.掌握用户存储过程的执行操作。 3.掌握用户存储过程的删除操作。 二、实验环境 Microsoft SQL Server 2008 三、实验内容 对应于“S+学号”数据库 (1)创建一个无参存储过程StuScoreInfo,查询以下信息:班级,学号,姓名,性别, ...

weixin_42904113的博客 4390

使用SQL创建视图和存储过程

文章目录1.定义所有女生信息的视图“F_Student”(5分)2.通过视图“F_Student”查询小于18岁的女生人数。(5分)3.定义“计算机系”学生的视图”CS_Student”,并要求透过该视图进行的更新操作只涉及计算机系学生。(5分)4.通过视图CS_Student插入一条学生记录,数据自拟,插入的数据在Sdept是否有限制?(5分)6.建立选修了“数据库原理”这门课的学生信息视图“D...

令狐_JackieHao的博客 3348

数据库

DBA(数据库管理员),DBA的职责是什么 1.决定数据库中的信息内容和结构 2.决定数据库的存储结构和存储策略 3.定义数据的安全性要求和完整性约束 4.监控数据库的使用和运行 5.完成数据库的改进,重组,或重构 2.常见的数据模型 层次模型,网状模型,关系模型,面向对象模型 数据库的完整性 域完整性,实体完整性,参照完整性 数据模型三要素 数据结构,数据操作,数据约...

芳芳呀的博客 1346

数据库系统实验六使用PL/SQL编写存储过程访问数据库mysql版

《数据库系统概论》实验报告 题目: 使用PL/SQL编写存储过程访问数据库 姓名 日期 2021.4.24 实验环境: ubuntu20.04 + mysql8.0.23 实验内容与完成情况: 1)统计离散数学的成绩分布情况,即按照各分数段统计人数; drop procedure if exists statistic_mark; create procedure statistic_mark(name char(20)) begin DECLARE less60 INT...

weixin_44629859的博客 1189
上一篇: sql子查询超经典例题:--连续3天登录的用户筛选
下一篇: sqoop操作:从0到1
好好羊
博客等级 码龄5年 5粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

好好羊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值