注意:数据类型,表关系

表之间的关系: 

查询练习及答案: 

select * from user_tables;
--科室
select * from dept;
--医生
select * from doctor;
--费用凭单汇总
select * from patient_script_genl;
--费用凭单明细
select * from patient_script_detl;
--医疗项目
select * from medi_item;
--费用结算
select * from patient_settle;
--病人信息
select * from per_natl;--1、查询所有药品的医疗项目编码、名称和单价,按照单价的降序排序。
select mi.ylxmbm, mi.ylxmmc, mi.djfrom medi_item miwhere mi.ylxmlb = 1order by mi.dj desc;
--2、查询与’安娜’医师在同一个科室工作的医师姓名。
select doc.xmfrom doctor docwhere doc.ksbm = (select doc.ksbm from doctor doc where doc.xm = '安娜');
--3、查询“格列佛”医师的科室负责人姓名。
select doc.xmfrom doctor docwhere doc.ysbm = (select doc.ksfzr from doctor doc where doc.xm = '格列佛');
--4、查询未结算的凭单的FYID、总金额、报销金额和自付金额。
select psg.fyid, psg.zje, psg.bxje, psg.zfje, psg.jshidfrom patient_script_genl psgwhere psg.jshid is null;
--5、查询使用过’ 阿莫西林’药品的病人个人编码和姓名。
select pn.grbm, pn.xmfrom per_natl pnwhere pn.grbm in(select psg.grbmfrom patient_script_genl psgwhere psg.fyid in(select psd.fyidfrom patient_script_detl psdwhere psd.ylxmbm = (select mi.ylxmbmfrom medi_item miwhere mi.ylxmmc = '阿莫西林')));
--6、查询没有使用过编码是“100001”医疗项目的病人个人编码和姓名。
select pn.grbm, pn.xmfrom per_natl pnwhere pn.grbm not in(select psg.grbmfrom patient_script_genl psgwhere psg.fyid in (select psd.fyidfrom patient_script_detl psdwhere psd.ylxmbm = '100001'));
--7、查询年龄大于50岁的病人的个人编码和姓名。
select pn.grbm, pn.xmfrom per_natl pnwhere trunc(months_between(sysdate, pn.csrq) / 12) > 50;--科室
select * from dept;
--医生
select * from doctor;
--费用凭单汇总
select * from patient_script_genl;
--费用凭单明细
select * from patient_script_detl;
--医疗项目
select * from medi_item;
--费用结算
select * from patient_settle;
--病人信息
select * from per_natl;--1、查询GRBM是’ 320106198907012569’的病人的姓名、出生日期、家庭住址和性别
--(其中性别为’1’表示男性,性别为’2’表示女性,请将数据库中的’1’和’2’转换为’男’和’女’ ;CSRQ以’YYYY.MM.DD’的形式显示)。
select pn.xm,to_char(pn.csrq, 'YY.MM.DD'),pn.jtzz,decode(pn.xb, 1, '男', 2, '女')from per_natl pnwhere pn.grbm = '320106198907012569';
--2、查询年龄大于50岁的病人的个人编码、姓名、年龄(用出生日期计算实际年龄)。
select pn.grbm, pn.xm, trunc(months_between(sysdate, pn.csrq) / 12) as agefrom per_natl pnwhere trunc(months_between(sysdate, pn.csrq) / 12) > 50;
--3、查询单笔报销金额大于100元的病人个人编码(编码中存在字母‘x’的显示为‘X’)和姓名
select replace(pn.grbm, 'x', 'X'), pn.xmfrom per_natl pnwhere pn.grbm in (select psg.grbmfrom patient_script_genl psgwhere psg.fyid in (select distinct psd.fyidfrom patient_script_detl psdwhere psd.bxje > 100));
--4、查询医师姓名长度大于20的医师科室及医师姓名(姓名中存在‘章’的替换为‘张’显示)、医师编号
select d.ksmc, replace(doc.xm, '章', '张'), doc.ysbmfrom doctor docjoin dept don doc.ksbm = d.ksbmwhere length(doc.xm) > 20;
--5、查询凭单明细表中使用过的医疗项目编码、医疗项目名称、医疗项目类别(用汉字显示‘1’药品‘2’诊疗 不是这两个值的均显示为‘未知’)、单价信息(当单价为空时要求显示为0)
select distinct psd.ylxmbm,mi.ylxmmc,decode(ylxmlb, '1', '药品', '2', '诊疗')from patient_script_detl psdjoin medi_item mion psd.ylxmbm = mi.ylxmbm;--6.patient_info  表征一个病人的一次住院,其主键是医疗统筹登记号
select * from patient_info where exists (select null from dual);select * from patient_settle ps where jshid = jshid;select pi.*, ps.*from patient_settle ps, patient_info piwhere ps.yltcdjh = pi.yltcdjh;
--首先关于where表达式中,不允许有分组聚合函数,因为根据sql执行顺序,不分组的聚合,直接进行即可,分组无意义。
--分组聚合查询中,select中单独出现的列,必须在group by中;但是group by中的列不一定非要单独出现在select中,虽然我们一般会写上;
--简单来说,就是前面有的单独列,后面一定要有分组;后面分组的列,前面不一定非写;
select psd.fyid, count(psd.fyid), psd.ylxmbmfrom patient_script_detl psdgroup by psd.fyid, psd.ylxmbm;create table dept_20190711 asselect * from dept;select * from dept_20190711 for update;delete from dept_20190711 de where de.ksbm = '0005';select userenv('language') from dual;select * from nls_database_parameters;--科室
select * from dept;
--医生
select * from doctor;
--费用凭单汇总
select * from patient_script_genl;
--费用凭单明细
select * from patient_script_detl;
--医疗项目
select * from medi_item;
--费用结算
select * from patient_settle;
--病人信息
select * from per_natl;
--1、查询同一张凭单中既使用过药品又使用过诊疗的fyid,grbm。(说明:ylxmlb:1--药品;2--诊疗)
--(同一个组,同一字段要求多个条件,而且不是组函数可以处理的条件)
--当医疗项目只有两种的时候,同一个fyid,类别总数为2即符合条件:
select psg.fyid, psg.grbmfrom patient_script_genl psgwhere psg.fyid in (select temp.fyidfrom (select psd.fyid, mi.ylxmlbfrom patient_script_detl psdjoin medi_item mion psd.ylxmbm = mi.ylxmbmgroup by psd.fyid, mi.ylxmlb) tempgroup by temp.fyidhaving count(temp.ylxmlb) = 2);
--如果要明确根据类别查询,使用INTERSECT运算符返回同时属于两个集合的记录的交集。
select psg.fyid, psg.grbmfrom patient_script_genl psgwhere psg.fyid in (select psd.fyidfrom patient_script_detl psdjoin medi_item mion psd.ylxmbm = mi.ylxmbmwhere mi.ylxmlb = '1'intersectselect psd.fyidfrom patient_script_detl psdjoin medi_item mion psd.ylxmbm = mi.ylxmbmwhere mi.ylxmlb = '2');
--(一个人可能会有多张凭单,fyid标识唯一一张凭单)
--2、查询每个人使用的医疗项目中既使用了编码为'100001'的项目又使用了编码为'200008'的项目的人员姓名,个人编码
select pn.xm, pn.grbmfrom per_natl pnwhere pn.grbm in (--查询使用了100001的个人编码select distinct psg.grbmfrom patient_script_genl psgjoin patient_script_detl psdon psg.fyid = psd.fyidwhere psd.ylxmbm = '100001'intersect--查询使用了200008的个人编码select distinct psg.grbmfrom patient_script_genl psgjoin patient_script_detl psdon psg.fyid = psd.fyidwhere psd.ylxmbm = '200008');
--3、查询同一张凭单中既使用了编码为'100001'的项目又使用了编码为'200008'的项目的人员姓名,个人编码
select pn.xm, pn.grbmfrom per_natl pnwhere pn.grbm in(select psg.grbmfrom patient_script_genl psg--筛选符合条件的凭单idwhere psg.fyid in (select psd.fyidfrom patient_script_detl psdwhere psd.ylxmbm = '100001')and psg.fyid in (select psd.fyidfrom patient_script_detl psdwhere psd.ylxmbm = '200008'));
--4、查询同一张凭单中既使用了“阿莫西林”又使用了“单脏器检查”的人员名单,查询字段包含xm, grbm
select pn.xm, pn.grbmfrom per_natl pnwhere pn.grbm in(select psg.grbmfrom patient_script_genl psgwhere psg.fyid in (--使用阿莫西林的凭单号                            select psd.fyidfrom patient_script_detl psdjoin medi_item mion psd.ylxmbm = mi.ylxmbmwhere mi.ylxmmc = '阿莫西林'intersect--使用单脏器检查的凭单号   select psd.fyidfrom patient_script_detl psdjoin medi_item mion psd.ylxmbm = mi.ylxmbmwhere mi.ylxmmc = '单脏器检查'));
--5、查询每个人使用的医疗项目中既使用了“阿莫西林”又使用了“单脏器检查”的人员名单,查询字段包含xm, grbm
select pn.xm, pn.grbmfrom per_natl pnwhere pn.grbm in (select distinct psg.grbmfrom patient_script_genl psgjoin patient_script_detl psdon psg.fyid = psg.fyidjoin medi_item mion psd.ylxmbm = mi.ylxmbmwhere mi.ylxmmc = '阿莫西林'intersectselect distinct psg.grbmfrom patient_script_genl psgjoin patient_script_detl psdon psg.fyid = psg.fyidjoin medi_item mion psd.ylxmbm = mi.ylxmbmwhere mi.ylxmmc = '单脏器检查');--创建用户 表空间
create tablespace tes_dw datafile 'H:\oracle\oradata\yyxpx\TES_DW.DAT' size 100M;
drop user dw2 cascade;
create user dw2 identified by dw2 default tablespace tes_dw;
grant dba to dw2;
-- Create table
create table zzz(KSBM VARCHAR2(10) primary key, KSMC VARCHAR2(51));
create table yyy(KSBM VARCHAR2(10) primary key, KSMC VARCHAR2(51)) tablespace tes_dw;--修改
select * from NEWPER_NATL for update;
--update
alter table NEWPER_NATL modify XM varchar2(300);--索引
create unique index dw2_newpatient_natl_index_csrq on NEWPER_NATL(CSRQ) tablespace tes_dw;
--序列号
create sequence newsequence increment by 2 startwith 100000 maxvalue 999999 minvalue 100000 cycle;
select to_char(sysdate, 'yyyymmdd') || '-' || dw2.newsequence.nextvalfrom dual;
--索引
create unique index dw2_newmi_index_ylxmbm on NEWMEDI_ITEM(ylxmbm);
--序列号
create sequence test_sequence increment by 1 startwith 100000 maxvalue 999999 minvalue 100000 cycle;
select to_char(sysdate, 'yymmdd') || '-' || dw2.test_sequence.nextvalfrom dual;--4、查询姓张的病人姓名和出生年份。
select pn.xm, pn.csrq from per_natl pn where pn.xm like '张%';--5、查询药品的平均单价(药品:ylxmlb=1)。
select avg(mi.dj) from medi_item mi where mi.ylxmlb = '1';
--6、查询发生过费用的病人总人数。
select count(distinct psg.grbm) from patient_script_genl psg;
--7、查询2000年以后出生的病人姓名。
select pn.xm from per_natl pn where to_char(pn.csrq, 'yyyy') > 2000;--科室
select * from dept;
--医生
select * from doctor;
--费用凭单汇总
select * from patient_script_genl;
--费用凭单明细
select * from patient_script_detl;
--医疗项目
select * from medi_item;
--费用结算
select * from patient_settle;
--病人信息
select * from per_natl;
题目:
--1、查询没有被使用过的医疗项目编码和名称。select mi.ylxmbm, mi.ylxmmcfrom medi_item miwhere mi.ylxmbm not in(select distinct psd.ylxmbm from patient_script_detl psd);
--2、查询与自己的科室负责人同名的医师的编码和姓名。
select doc.ysbm, doc.xmfrom doctor docwhere doc.xm =(select doc1.xm from doctor doc1 where doc1.ysbm = doc.ksfzr);
--3、查询未结算费用凭单的总金额、自付金额和报销金额。
select psg.zje, psg.zfje, psg.bxjefrom patient_script_genl psgwhere psg.jshid is null;
--4、查询使用医疗项目数目最多的费用凭单编码。
select *from (select psd.fyidfrom patient_script_detl psdgroup by psd.fyidorder by sum(psd.sl) desc)where rownum = 1;
--5、新增科室,科室编码为’999’,科室名称为’核磁共振室’。
insert into dept (ksbm, ksmc) values ('999', '核磁共振室');
commit;
--6、删除没有发生过费用的病人信息。(先备份,再根据备份删除)
create table PER_NATL_COPY asselect * from per_natl;delete from per_natl_copy pncwhere pnc.grbm not in(select distinct psg.grbm from patient_script_genl psg);
--7、将高于平均价的药品的价格降低10%。(先备份,在更新))
drop table medi_item_copy;
create table medi_item_copy asselect * from medi_item;update medi_item_copy micset mic.dj = mic.dj * 0.9where mic.dj >(select avg(mic2.dj) from medi_item_copy mic2 where mic2.ylxmlb = '1')and mic.ylxmlb = '1';
--8、查询所有药品的医疗项目编码、名称和单价,按照单价的降序排序。
select mi.ylxmbm, mi.ylxmmc, mi.djfrom medi_item miwhere mi.ylxmlb = '1'order by mi.dj desc;
--9、查询与’安娜’医师在同一个科室工作的医师姓名。(两种方案)
select doc.xmfrom doctor docwhere doc.ksbm = (select doc.ksbm from doctor doc where doc.xm = '安娜')and doc.xm != '安娜';select doc2.xmfrom doctor doc1join doctor doc2on doc1.ksbm = doc2.ksbmwhere doc1.xm = '安娜'and doc2.xm != '安娜';
--10、查询“格列佛”医师的科室负责人姓名。
select doc.xmfrom doctor docwhere doc.ysbm = (select doc.ksfzr from doctor doc where doc.xm = '格列佛');--科室
select * from dept;
--医生
select * from doctor;
--费用凭单汇总
select * from patient_script_genl;
--费用凭单明细
select * from patient_script_detl;
--医疗项目
select * from medi_item;
--费用结算
select * from patient_settle;
--病人信息
select * from per_natl;
--1、查询未结算的FYID及其总费用、报销费用和自付费用。
select psg.fyid, psg.zje, psg.bxje, psg.zfjefrom patient_script_genl psgwhere psg.jshid is null;
--2、查询2012年的平均报销金额。(两种方案)
select avg(psg.bxje)from patient_script_genl psgwhere to_char(psg.fyfsrq, 'yyyy') = 2012;select avg(psg.bxje)from patient_script_genl psggroup by to_char(psg.fyfsrq, 'yyyy')
having to_char(psg.fyfsrq, 'yyyy') = '2012';
--3、查询使用过’ 阿莫西林’药品的病人个人编码和姓名。(两种方案)
select pn.grbm, pn.xmfrom per_natl pnwhere pn.grbm in(select psg.grbmfrom patient_script_genl psgwhere psg.fyid in (select distinct psd.fyidfrom patient_script_detl psdjoin medi_item mion psd.ylxmbm = mi.ylxmbmwhere mi.ylxmmc = '阿莫西林'));select distinct pn.grbm, pn.xmfrom per_natl pnjoin patient_script_genl psgon pn.grbm = psg.grbmjoin patient_script_detl psdon psg.fyid = psd.fyidjoin medi_item mion psd.ylxmbm = mi.ylxmbmwhere mi.ylxmmc = '阿莫西林';
--4、查询没有使用过编码是“100001”医疗项目的病人个人编码和姓名。
select pn.grbm, pn.xmfrom per_natl pnwhere pn.grbm not in (select distinct psg.grbmfrom patient_script_genl psgjoin patient_script_detl psdon psg.fyid = psd.fyidwhere psd.ylxmbm = '100001');
--5、 查询GRBM是’ 320106198907012569’的病人的姓名、出生日期、家庭住址和性别(其中性别为’1’表示男性,性别为’2’表示女性,请将数据库中的’1’和’2’转换为’男’和’女’ ;CSRQ以’YYYY.MM.DD’的形式显示)。
select pn.xm,to_char(pn.csrq, 'yyyy.mm.dd'),pn.jtzz,decode(pn.xb, '1', '男', '2', '女')from per_natl pnwhere pn.grbm = '320106198907012569';
--6、查询重名的病人姓名及该姓名重名的人数。
select pn.xm, count(pn.xm)from per_natl pngroup by pn.xm
having count(pn.xm) > 1;
--7、查询年龄大于50岁的病人的个人编码和姓名。
select pn.grbm, pn.xmfrom per_natl pnwhere trunc(months_between(sysdate, pn.csrq) / 12) > 50;
--8、查询报销金额大于100元的病人个人编码和姓名
select pn.grbm, pn.xmfrom per_natl pnwhere pn.grbm in(select psg.grbm from patient_script_genl psg where psg.bxje > 100);select '19' || '10' from dual;
select '19' + '10' from dual;
select '19' || 'ab' from dual;
--select '19'+'ab' from dual; oracle 中+ 仅代表 算数运算select nvl(zje, 0) from patient_settle where 1 = 2;
select max(zje) from patient_settle where 1 = 2;
select max(zje) from patient_settle where 1 = 2 group by grbm;--科室
select * from dept;
--医生
select * from doctor;
--费用凭单汇总
select * from patient_script_genl;
--费用凭单明细
select * from patient_script_detl;
--医疗项目
select * from medi_item;
--费用结算
select * from patient_settle;
--病人信息
select * from per_natl;
--题目:
--1、查询报销金额最多的病人的个人编码。
select *from (select psg.grbm from patient_script_genl psg order by psg.bxje desc)where rownum = 1;
--2、查询自付金额最多的科室编码。
select *from (select psg.ksbmfrom patient_script_genl psggroup by psg.ksbmorder by sum(psg.zfje) desc)where rownum = 1;
--3、查询单价最贵的药品编码、名称和单价
select *from (select mi.ylxmbm, mi.ylxmmc, mi.djfrom medi_item miwhere mi.ylxmlb = '1'order by mi.dj desc)where rownum = 1;
--4、将所有诊疗项目的报销比例提高5%,如果报销比例提高5%后超过100%,则该诊疗项目的报销比例维持原值。(先备份再根据备份更新)
update medi_item_copy uicset uic.bxbl = uic.bxbl + 0.05where uic.bxbl <= 0.95and uic.ylxmlb = '2';--5、删除病人“320106198907012569”的医疗费用和结算费用。(先备份再删除)
create table patient_settle_copy asselect * from dw.patient_settle;
create table patient_script_genl_copy asselect * from dw.patient_script_genl;
create table patient_script_detl_copy asselect * from dw.patient_script_detl;delete from patient_script_detl_copy psdcwhere psdc.fyid in (select psgc.fyidfrom patient_script_genl_copy psgcwhere psgc.grbm = '320106198907012569');delete from patient_script_genl_copy psgcwhere psgc.grbm = '320106198907012569';delete from patient_settle ps where ps.grbm = '320106198907012569';--6、查询每个科室的科室名称,医生总人数,男医生人数,女医生人数(医生在doctor表)
select d.ksmc,count(d.ksmc),sum(decode(doc.xb, '1', 1, 0)),sum(decode(doc.xb, '2', 1, 0))from dept djoin doctor docon d.ksbm = doc.ksbmgroup by d.ksmc;
--7、查询每种项目的使用情况
--查询字段包含:医疗项目编码,医疗项目名称,医疗项目类别,使用数量
select psd.ylxmbm,mi.ylxmmc,decode(mi.ylxmlb, '1', '药品', '2', '诊疗', '未知'),count(psd.ylxmbm)from patient_script_detl psdjoin medi_item mion psd.ylxmbm = mi.ylxmbmgroup by psd.ylxmbm,mi.ylxmmc,decode(mi.ylxmlb, '1', '药品', '2', '诊疗', '未知');
--8、查询每张凭单的用药情况
--查询字段包含:fyid,诊疗数量,药品数量
select psd.fyid,sum(decode(mi.ylxmlb, '2', psd.sl, 0)),sum(decode(mi.ylxmlb, '1', psd.sl, 0))from patient_script_detl psdjoin medi_item mion psd.ylxmbm = mi.ylxmbmgroup by psd.fyid;--9、查询使用过诊疗项目的凭单的 fyid,凭单总金额
select distinct psg.fyid, psg.zjefrom patient_script_genl psgjoin patient_script_detl psdon psg.fyid = psd.fyidjoin medi_item mion psd.ylxmbm = mi.ylxmbmwhere mi.ylxmlb = '2';
--10、查询使用过“阿莫西林” 的医生的姓名,所在科室。
select doc.xm, d.ksmcfrom doctor docjoin dept don doc.ksbm = d.ksbmwhere doc.ysbm in (select distinct psg.ysbmfrom patient_script_genl psgjoin patient_script_detl psdon psg.fyid = psd.fyidjoin medi_item mion psd.ylxmbm = mi.ylxmbmwhere mi.ylxmmc = '阿莫西林');--题目:
--1、查询使用了3种及以上药品的人员的姓名
--方案1:
select pn.xmfrom per_natl pnwhere pn.grbm in (select psg.grbmfrom patient_script_genl psgjoin patient_script_detl psdon psg.fyid = psd.fyidjoin medi_item mion psd.ylxmbm = mi.ylxmbmwhere mi.ylxmlb = '1'group by psg.grbmhaving count(distinct psd.ylxmbm) >= 3);
--方案2:
select pn.xmfrom per_natl pnjoin patient_script_genl psgon pn.grbm = psg.grbmjoin patient_script_detl psdon psg.fyid = psd.fyidjoin medi_item mion psd.ylxmbm = mi.ylxmbmwhere mi.ylxmlb = '1'group by pn.xm
having count(distinct psd.ylxmbm) >= 3;--方案3:
select pn.xmfrom per_natl pnwhere exists (select psg.grbmfrom patient_script_genl psgjoin patient_script_detl psdon psg.fyid = psd.fyidjoin medi_item mion psd.ylxmbm = mi.ylxmbmwhere mi.ylxmlb = '1'and psg.grbm = pn.grbmgroup by psg.grbmhaving count(distinct psd.ylxmbm) >= 3);--2、查询姓名为“格列佛”的医生的编号,姓名,科室名称,开具的凭单张数;
select doc.ysbm, doc.xm, d.ksmc, count(psg.fyid)from dept djoin doctor docon d.ksbm = doc.ksbmjoin patient_script_genl psgon doc.ysbm = psg.ysbmwhere doc.xm = '格列佛'group by doc.ysbm, doc.xm, d.ksmc;
--3、查询使用过“阿莫西林”的人员的姓名,个人编码,fyid,是否结算
select distinct pn.xm,pn.grbm,psd.fyid,decode(psg.jshid, null, '否', '是') as 是否结算from per_natl pnjoin patient_script_genl psgon pn.grbm = psg.grbmjoin patient_script_detl psdon psg.fyid = psd.fyidjoin medi_item mion psd.ylxmbm = mi.ylxmbmwhere mi.ylxmmc = '阿莫西林';
--4、统计每人的姓名,个人编码,凭单张数,费用合计,自负费用合计。
--统计所有人记录,需要使用左外连接
select pn.xm, pn.grbm, count(psg.fyid), sum(psg.zje), sum(psg.zfje)from per_natl pnleft join patient_script_genl psgon pn.grbm = psg.grbmgroup by pn.xm, pn.grbm;
--5、统计只使用过诊疗项目的凭单的 fyid,凭单总金额(不要求必须做出来)
select distinct psg.fyid, psg.zjefrom patient_script_genl psgjoin patient_script_detl psdon psg.fyid = psd.fyidjoin medi_item mion psd.ylxmbm = mi.ylxmbmwhere mi.ylxmlb = '2'
minus
select distinct psg.fyid, psg.zjefrom patient_script_genl psgjoin patient_script_detl psdon psg.fyid = psd.fyidjoin medi_item mion psd.ylxmbm = mi.ylxmbmwhere mi.ylxmlb = '1';--6、计算per_natl中的人员的年龄,并更新到nl字段中
update per_natl pnset pn.nl =(select trunc(months_between(sysdate, pn.csrq) / 12)from per_natl pn1where pn.grbm = pn1.grbm);
--7、给medi_item表增加一列zxbz, 长度为1 的字符型。
alter table medi_item add zxbz varchar2(1);
--8、备份没有使用过的医疗项目,然后将medi_item中对应的项目zxbz修改成1
--备份
create table MEDI_ITEM_NOTUSE asselect distinct mi.*from medi_item mileft join patient_script_detl psdon mi.ylxmbm = psd.ylxmbmwhere psd.ylxmbm is null;
--修改
update medi_item miset mi.zxbz = '1'where mi.ylxmbm in (select distinct mi.ylxmbmfrom medi_item mileft join patient_script_detl psdon mi.ylxmbm = psd.ylxmbmwhere psd.ylxmbm is null);--(exists 的使用)查询使用了全部药品的医疗费用凭单编码select distinct fyidfrom dw.patient_script_detl awhere not exists (select ylxmbmfrom dw.medi_itemwhere ylxmlb = '1'minus (select ylxmbmfrom dw.patient_script_detl bwhere a.fyid = b.fyid));select distinct fyidfrom dw.patient_script_detl awhere not exists(select 1.00000000000from dw.medi_item bwhere ylxmlb = '1'and not exists (select 2from dw.patient_script_detl cwhere a.fyid = c.fyidand b.ylxmbm = c. ylxmbm));

Oracle 查询练习及答案相关推荐

  1. 订购后如何限制Oracle查询返回的行数?

    有没有一种方法可以使Oracle查询像包含MySQL limit子句那样工作? 在MySQL ,我可以这样做: select * from sometable order by name limit ...

  2. oracle 语句 在线测试,2017年Oracle数据库基础测试答案.doc

    . . word完美格式 2017年Oracle数据库基础测试答案 姓名 成绩 一.单项选择题(每题1分,共60分) 列出EMP表中,从事每个工种(JOB)的员工人数 A.select job fro ...

  3. oracle试题和答案,Oracle面试题及答案

    Oracle面试题及答案模块和题目 l基本SQL查询 l运算符与函数 l子查询 l连接查询 建表语句emp.sql PartI(第一天) 01.查询员工表所有数据,并说明使用*的缺点 答: selec ...

  4. oracle练习习题与答案

    oracle练习习题与答案 提示:先复习一遍在做题会更香哦~ oracle基础入门总结. 前言 在之前的一次项目经历中,sql语句的不熟练,出现的问题花费了我大量的时间,趁着最近在学习,发现网上有很多 ...

  5. oracle数据库课后习题答案,oracle数据库经典练习题及答案

    最近下载了一套oracle数据库习题(无答案),本人自己在oracle上练习得到的答案,如果不对的地方,请不要见怪.保存到博客方便自己以后查阅. 相关表: /*学生表*/ create table s ...

  6. oracle分组查询取第一条数据,160804、oracle查询:取出每组中的第一条记录

    oracle查询:取出每组中的第一条记录 按type字段分组,code排序,取出每组中的第一条记录 方法一: select type,min(code) from group_info group b ...

  7. oracle查看列属性,oracle查询列属性

    oracle 动态查询列,查看oracle数据库的表名和列名,oracle查询列名,oracle查询列属性 oracle 查询动态列,查看oracle数据库的表名和列名,oracle查询列名,orac ...

  8. oracle面试一般问几个问题,oracle面试问题及答案有哪些

    oracle是一个什么信息的呢,指的又是什么的呢.通过下文,oracle面试问题及答案有哪些.我们一起来了解一下. oracle面试问题及答案有哪些一 这也许是你一直期待的文章,在关注这部分技术问题的 ...

  9. Oracle查询字段以外的内容,Oracle查询字段内容为非数字的记录

    今天在一张3W多记录的表里查非数字的异常数据~数据库太水,记录一发,因为2.5使用人员误输入为2..5.... select t.routecardlist_id,trim(translate(RTR ...

最新文章

  1. spark on k8s配置日志存储路径:spark-defaults.conf
  2. 线程同步的各种方法汇总
  3. 在js中if条件为null/undefined/0/NaN/表达式时,统统被解释为false,此外均为true
  4. centos6.5安装mongodb2.6
  5. Kotlin学习笔记 第四章Kotlin调用Java
  6. Redis入门篇(安装与启动)
  7. 跟着锅子一步步学习32位汇编(3)---MOV和XCHG指令
  8. Python爬虫方法三部曲
  9. Java根据位置获取经纬度计算距离
  10. 服务器虚拟化厂家排名,鹿死谁手?桌面虚拟化厂商实力大比拼
  11. 人工智能系列 之机器学习DBSCAN聚类算法
  12. 汇编指令rep stosq
  13. matlab虚拟示波器,虚拟示波器是什么_虚拟示波器详解
  14. Unity实现可调子屏幕(类小地图)效果
  15. 一个关于Linux Bridge配置的吐嘈
  16. javaSE(71-148)
  17. 嵌入式Web开发——Boa服务器移植
  18. 生活中软件易用性的例子_大学生活中那些堪称神器的软件,真实且好用,生活学习必备...
  19. 三星手机更新应用后就无服务器,三星手机正在完成系统更新怎么办
  20. 基于ICMP的活跃主机发现技术

热门文章

  1. JAVA无法加载此类文件,ORA-00376: 此时无法读取文件问题处理
  2. 【4】SCN-Feign远程调用
  3. 关于服务网关的几个问题
  4. G1垃圾收集器之RSet
  5. Mybatis中的动态SQL记录
  6. springcloud使用restTemplate进行服务调用
  7. HTTP相关知识的总结
  8. 利用元数据管理数据质量
  9. 软件测试之缺陷报告的BUG状态
  10. tornado实现基于websocket的好友一对一聊天功能