实验二:数据查询实验

news2024/12/29 19:48:23

实验目的】

熟练运用SQL语言实现数据查询,包括单表查询、分组查询、连接查询、嵌套查询、集合查询、oralce数据库常用函数等

【实验内容】

根据“数据导入”文档中的语句,将“费用明细表”和“科室字典”2张excel表内容导入数据库。然后拟定以下内容的sql语句,根据实验报告模板完成实验报告。实验报告中()的内容是需要自己填写的内容。各个内容前的知识点,只是参考内容,实现功能的sql有多种方式,只要满足内容的sql都可以

建表:

--创建费用明细表
CREATE TABLE 费用明细表
(ID号	VARCHAR2(20),		
住院次数	NUMBER(2),		
项目序号	NUMBER(6),		
项目代码	VARCHAR2(20),	
项目名称	VARCHAR2(120),	
开单科室代码	VARCHAR2(8),		
执行科室代码	VARCHAR2(8),		
数量	NUMBER(6,2),		
总金额	NUMBER(10,4),
计价时间	DATE
);
--导入数据
SELECT * FROM 费用明细表 FOR UPDATE;

--创建科室字典
CREATE TABLE 科室字典
(科室代码	VARCHAR2(8),		
 科室名称	VARCHAR2(50)
);
--导入数据
SELECT * FROM 科室字典 FOR UPDATE;

1、查询各项费用的开单科室名称和执行科室名称。查询结果为ID号、住院次数、项目序号、项目代码、项目名称、开单科室代码、开单科室名称、执行科室代码、执行科室名称、数量、总金额、计价时间

个人答案:

SELECT a.id号,
a.住院次数,
a.项目序号,
a.项目名称,
a.开单科室代码,
b.科室名称 开单科室名称,
a.执行科室代码,
c.科室名称 执行科室名称,
a.数量,
a.总金额,
a.计价时间
FROM 费用明细表 a,
     科室字典 b,
     科室字典 c
WHERE a.开单科室代码 = b.科室代码
AND a.执行科室代码 = c.科室代码

 参考答案:

SELECT a.id号,
       a.住院次数,
       a.项目序号,
       a.项目代码,
       a.项目名称,
       a.开单科室代码,
       b.科室名称 开单科室名称,
       a.执行科室代码,
       b.科室名称 执行科室名称,
       a.数量,
       a.总金额,
       a.计价时间
FROM 费用明细表 a,
     科室字典 b,
     科室字典 c
WHERE a.开单科室代码 = b.科室代码
AND   a.执行科室代码 = c.科室代码;

2、查询单价大于等于10并且小于等于100,计价时间在2点-4点之间(包括2点和4点)的项目代码、项目名称、单价(保留2为小数)、数量、总金额、计价时间。查询结果按先项目代码升序排序,再按按计价时间降序排序

个人答案:

select a.项目代码,
a.项目名称,
a.数量,
a.总金额,
a.计价时间,
 Round(a.总金额/a.数量,2) 单价,
a.总金额/a.数量
From 费用明细表 a
where a.总金额/a.数量 >=10 
and a.总金额/a.数量 <=100
and to_char(a.计价时间,'hh24') >= '02'
and to_char(a.计价时间,'hh24') <= '04'
order by a.项目代码,a.计价时间 desc

 参考答案:

SELECT a.项目代码,
       a.项目名称,
       round(a.总金额/a.数量,2) 单价,
       a.数量,
       a.总金额,
       a.计价时间
FROM 费用明细表 a
WHERE (a.总金额/a.数量) >= 10
AND   (a.总金额/a.数量) <= 100
AND   to_char(a.计价时间,'hh24') >= '02'
AND   to_char(a.计价时间,'hh24') <= '04'
ORDER BY a.项目代码,a.计价时间 DESC;

3、统计开单科室名称中包含“医生站”,开单科室收费总金额大于2000的开单科室和汇总金额信息。查询结果为开单科室代码、开单科室名称、开单科室总金额

个人答案:

select
a.开单科室代码,
b.科室名称 开单科室名称,
sum(a.总金额) 开单科室总金额
From 费用明细表 a,
     科室字典 b
where a.开单科室代码=b.科室代码
and b.科室名称 like'%医生站%'
group by  a.开单科室代码,
b.科室名称
having sum(a.总金额) > 2000;

 参考答案:

SELECT a.开单科室代码,
       b.科室名称 开单科室名称,
       SUM(a.总金额) 开单科室总金额
FROM 费用明细表 a,
     科室字典 b
WHERE a.开单科室代码 = b.科室代码
AND   b.科室名称 LIKE '%医生站%'
GROUP BY a.开单科室代码,
         b.科室名称
HAVING SUM(a.总金额) > 2000;

4、统计开单科室和收费总金额,将科室字典中的所有科室都显示出来。如果科室没有进行开单收费,则收费总金额留空。查询结果为开单科室代码、开单科室名称、开单科室总金额

个人答案:

select 
b.科室代码 开单科室代码,
b.科室名称 开单科室名称,
a.开单科室总金额
From 科室字典 b
left join (
select 开单科室代码,
sum(总金额) 开单科室总金额
from 费用明细表
group by 开单科室代码
) a on b.科室代码 = a.开单科室代码;

 参考答案:

SELECT a.科室代码, 
       a.科室名称,
       b.开单科室总金额
FROM 科室字典 a
LEFT JOIN (SELECT 开单科室代码,SUM(总金额) 开单科室总金额 FROM 费用明细表 GROUP BY 开单科室代码) b ON a.科室代码 = b.开单科室代码;

5、查询同一次住院(相同的id号和住院次数表示同一次住院),费用中既有'氯化钠注射液(输液)'又有'5%葡萄糖注射液'的患者,在这次住院期间费用名称为'氯化钠注射液(输液)'或者'5%葡萄糖注射液'的费用信息。查询结果显示费用明细表所有属性

个人答案:

select *
from 费用明细表 a
where not exists
(select * from 费用明细表 b
where a.ID号 = b.ID号
and a.住院次数 = b.住院次数
and a.项目名称 = '氯化钠注射液'
and not exists
(select *from 费用明细表 c
where b.ID号 = c.ID号
and b.住院次数 = b.住院次数
and c.项目名称 = '5%葡萄糖注射液'))
and not exists
(select * from 费用明细表 b
where a.ID号= b.ID号
and a.住院次数 = b.住院次数
and a.项目名称 = '5%葡萄糖注射液'
and not exists
(select * from 费用明细表 c
where b.ID号 = c.ID号
and b.住院次数 = b.住院次数
and c.项目名称 = '氯化钠注射液'))
and a.项目名称 in ('氯化钠注射液','5%葡萄糖注射液');

 参考答案(共三种):

SELECT *
FROM 费用明细表 a
WHERE NOT EXISTS
      (SELECT * FROM 费用明细表 b
       WHERE a.id号 = b.id号
       AND   a.住院次数 = b.住院次数
       AND   a.项目名称 = '氯化钠注射液(输液)'
       AND   NOT EXISTS
             (SELECT * FROM 费用明细表 c
             WHERE b.id号 = c.id号
             AND   b.住院次数 = b.住院次数
             AND   c.项目名称 = '5%葡萄糖注射液'))
AND NOT EXISTS
      (SELECT * FROM 费用明细表 b
       WHERE a.id号 = b.id号
       AND   a.住院次数 = b.住院次数
       AND   a.项目名称 = '5%葡萄糖注射液'
       AND   NOT EXISTS
             (SELECT * FROM 费用明细表 c
             WHERE b.id号 = c.id号
             AND   b.住院次数 = b.住院次数
             AND   c.项目名称 = '氯化钠注射液(输液)'))
AND a.项目名称 IN ('氯化钠注射液(输液)','5%葡萄糖注射液');

SELECT *
FROM 费用明细表 a 
WHERE EXISTS
      (SELECT * FROM 费用明细表 b
       WHERE a.id号 = b.id号
       AND   a.住院次数 = b.住院次数
       AND   b.项目名称 = '氯化钠注射液(输液)')
AND EXISTS
      (SELECT * FROM 费用明细表 c
       WHERE a.id号 = c.id号
       AND   a.住院次数 = c.住院次数
       AND   c.项目名称 = '5%葡萄糖注射液')
AND a.项目名称 IN ('氯化钠注射液(输液)','5%葡萄糖注射液');

SELECT *
FROM 费用明细表 a 
WHERE (a.id号,a.住院次数) IN
      (SELECT b.id号,b.住院次数 
       FROM 费用明细表 b
       WHERE b.项目名称 IN ('氯化钠注射液(输液)','5%葡萄糖注射液')
       GROUP BY b.id号,b.住院次数
       HAVING COUNT(DISTINCT b.项目名称) = 2
      )
AND a.项目名称 IN ('氯化钠注射液(输液)','5%葡萄糖注射液');

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/111320.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

力扣刷题笔记day8(二维数组中的查找+旋转数组的最小数字+第一个只出现一次的字符)

文章目录二维数组中的查找题目思路代码旋转数组的最小数字题目思路代码第一个只出现一次的字符题目思路代码二维数组中的查找 在一个 n * m 的二维数组中&#xff0c;每一行都按照从左到右 非递减 的顺序排序&#xff0c;每一列都按照从上到下 非递减 的顺序排序。请完成一个高…

中级集成和高级信息系统项目管理怎么选?考哪个?

二者只有一个不同&#xff0c;高级需要考论文&#xff0c;如果有时间&#xff0c;有需求&#xff0c;就直接冲高级&#xff0c;一步到位&#xff1b; 下面一起看看两个科目的不同之处&#xff1a; 系统集成项目管理工程师 通过本考试的合格人员能够掌握系统集成项目管理的知识…

linux armhf ubuntu18.04搭建docker

1、开发环境 文件系统版本&#xff1a;ubuntu18.04 armhf 内核版本&#xff1a;linux4.1.15 docker版本&#xff1a;20.10.22 2、ubuntu上安装docker 1、卸载过往的版本 sudo apt-get remove docker docker-ce docker.io containerd runc2、重新更新、安装 sudo apt-get …

vue3+vite +element-plus+tailwindcss兼容低版本浏览器(uc)

部分问题 uc浏览器 rgb支持不全 如rgb(0 0 0 /30%) 这种写法不支持 tailwindcss v3 部分样式在低版本下也不支持 uc浏览器 对于 tailwindcss boxShadow 不支持 主要还是rgb原因 兼容 直接贴出代码 使用 tailwindcss 2.2.16 版本 v3低版本不支持 tailwindcss v2的 jit模式 和…

插值算法基本原理

插值&#xff1a;数据处理的手段 将缺失数据补全处理 线性内插 拉格朗日插值法 牛顿插值 拟合&#xff1a;预测&#xff0c;寻找规律的手段 是插值的外延 插值算法&#xff1a;使用在现有的数据极少&#xff0c;不足以支撑分析的进行&#xff0c;这时就需要使用一些数学方法…

植物激素基因高级分析来啦~

很多植物转录组学文章中&#xff0c;都有整合激素相关基因和表达数据的pathway图&#xff0c;直观地展示通路及其中重要基因的位置和功能。 植物激素&#xff08;Phytohormone&#xff09;亦称植物天然激素或植物内源激素&#xff0c;是指植物体内产生的一些微量而能调节&…

排序算法——快速排序

快排 ​ 确定一组数据 &#xff0c;即q数组 ​ 左端点为了&#xff0c;右端点为r ​ &#xff08;1&#xff09;确定分界点 ​ q[l] 或 q[ (l r) / 2] 或 q[r] 或任意一个数 作为分界点&#xff0c;分界点数为x ​ &#xff08;2&#xff09;调整区间 &#xff08;重点&a…

能源监控管理系统|瑜岿科技

瑜岿科技在产业转型升级过程中积极布局智能制造、物联网产业细分领域&#xff0c;拥抱多元化市场。立足市场、顺势而为&#xff0c;以创新理念驱动产业变革&#xff0c;以互联网、物联网思维重塑经营模式&#xff0c;成功打造“碳中和 碳达峰”背景下——能源监控管理系统。 智…

leetCode周赛-317

这里写目录标题题目一&#xff1a;6220.可被三整除的偶数的平均值题目二&#xff1a;6221. 最流行的视频创作者题目三&#xff1a;6222. 美丽整数的最小增量题目四&#xff1a;2458. 移除子树后的二叉树高度题目一&#xff1a;6220.可被三整除的偶数的平均值 AC代码&#xff1…

考研数学练习题-2022年12月23日

日期&#xff1a;2022年12月23日 数量&#xff1a;10

deck.gl 调研

0 结论 deck gl 是基于 WebGL 的数据可视化框架&#xff0c;可以集成在主流的地图框架&#xff08;arcgis&#xff0c;google maps&#xff0c;mapbox &#xff09;中使用&#xff0c; 也可以单独使用。 deck gl 通过layer进行数据可视化&#xff0c;支持多种展示效果&#xf…

什么是网络监控?OpManager 网络监控解决方案

什么是网络监控 在当今世界&#xff0c;术语网络监控在整个IT行业中很普遍。网络监控是一个关键的 IT 过程&#xff0c;其中所有网络组件&#xff08;如路由器、交换机、防火墙、服务器和虚拟机&#xff09;都受到故障和性能监控&#xff0c;并持续评估以维护和优化其可用性。…

基于防火墙双击热备三层网络规划_ensp综合实验

作者&#xff1a;BSXY_19计科_陈永跃BSXY_信息学院注&#xff1a;未经允许禁止转发任何内容基于防火墙双击热备三层网络规划_ensp综合实验前言及技术/资源下载说明&#xff08; **未经允许禁止转发任何内容** &#xff09;插曲&#xff1a;基于eNSP中大型校园/企业网络规划与设…

聊聊首次使用航顺HK32F030C8T6的体验

先说结论&#xff0c;项目基本上开发测试完成了,mcu运行正常。 这个项目是一个智能家居的项目&#xff0c;主板和副板都使用了HK32F030C8T6&#xff0c;这也是笔者第一次使用航顺的芯片。 关于这个芯片的资料&#xff0c;从官网只能下载到datasheet和user mannal的pdf文档&am…

代码随想录训练营第59天|LeetCode 503.下一个更大元素II、42. 接雨水

参考 代码随想录 题目一&#xff1a;LeetCode 503.下一个更大元素II 这个题在496. 下一个更大元素 I基础上数组变成了环&#xff0c;其实两次两次数组就可以了。代码如下&#xff1a; class Solution { public:vector<int> nextGreaterElements(vector<int>&am…

即时通讯实时视频聊天技术提供QoS保证的方法

随着WebRTC标准的逐步推广&#xff0c;实时音视频通讯技术受到越来越多公司和技术人员的关注。 对于交互式音视频应用而言&#xff0c;稳定、低延时、通话质量清晰可靠是其基本需求。在互联网环境下&#xff0c;音视频的通话质量与以下因素有关&#xff1a;一是编码码率、帧率和…

Opencv IplImage 和 Mat 使用介绍

1. IPIImage 使用介绍 IplImage是OpenCV中CxCore部分基础的数据结构&#xff0c;用来表示图像&#xff0c;其中Ipl是Intel Image Processing Library的简写。以下是IplImage的结构分析。参见:OpenCV中文网站 typedef struct _IplImage{int nSize; /* IplImage大小 *…

70页幻灯片图解“工信领域数据安全管理办法”等五部委数据法规

国家安全是民族复兴的根基。党的二十大报告指出&#xff0c;“加快建设制造强国、质量强国、航天强国、交通强国、网络强国、数字中国”、“推进国家安全体系和能力现代化”、“强化经济、重大基础设施、金融、网络、数据、生物、资源、核、太空、海洋等安全保障体系建设”。数…

02-redis篇 redis事务处理及使用方式

目录 1. 事务简介: -> 1.1 必须满足: ACID四个特性(原子性,一致性,隔离性,持久性) -> 1.2 简单理解: 一个业务,也可以看成是一个逻辑工作单元; 2. redis 操作事务的基本指令 -> 指令: -> 图式: 3. 模拟多事务操作(watch乐观锁) 3.1 不开启乐观锁watch操作…

Linux Python安装

1.到官网下载适合自己的版本 Python Source Releases | Python.orgThe official home of the Python Programming Languagehttps://www.python.org/downloads/source/2.下载好压缩包之后&#xff0c;将压缩包解压开 3.将开发环境的依赖包准备好 yum -y install zlib-devel bz…