統計查詢和組合查詢(SQL SERVER 2008)

一 、實驗題目:統計查詢和組合查詢
二 、實驗目的:加深對統計查詢的理解,熟練使用聚簇函數
題目六:
藥品(編號,名稱,價格,廠商)
處方(藥品編號,數量,醫生編號)
醫生 (編號,姓名,科室,職稱)
根據上面基本表的信息完成下列查詢。
1 統計每種藥品的使用數量。
2 統計提供三種以上藥品的廠商。
3 統計每個科室“青黴素”用量。
4統計從沒開過“秦黴素”的醫生信息。

所測試的數據:

INSERT INTO 醫生
(編號,姓名,科室,職稱)
VALUES
('1001','張三','外科','主刀醫師'),
('1002','李四','內科','主任醫師'),
('1003','王五','小兒科','主治醫師'),
('1004','王二','眼科','主任醫師'),
('1005','趙六','婦科','主刀醫師'),
('1006','張力','內科','副主任醫師'),
('1007','張力','骨科','主刀醫師');
select * from 醫生

INSERT INTO 藥品
(編號,名稱,價格,廠商)
VALUES
('2001','板藍根','28.00','雲南製藥'),
('2002','益氣養血口服液','29.00','北方製藥'),
('2003','小兒感冒顆粒','35.00','三九藥業'),
('2004','999感冒靈','14.00','三九藥業'),
('2005','維C銀翹片','25.00','北方製藥'),
('2006','珍珠明目滴眼液','19.00','三九藥業'),
('2007','青黴素','5.00','北方製藥'),
('2008','秦黴素','10.00','北方製藥');

select * from 藥品

INSERT INTO 處方
(藥品編號,數量,醫生編號)
VALUES
('2001','2','1002'),
('2001','2','1006'),
('2005','2','1006'),
('2006','2','1004'),
('2002','2','1005'),
('2003','2','1003'),
('2007','3','1002'),
('2007','5','1003'),
('2008','7','1006');
select * from 處方

在這裏插入圖片描述
第一題:

select 藥品.名稱,sum(數量)'使用數量'
from 藥品 left outer join 處方 on (藥品.編號 =處方.藥品編號 )
group by 藥品.名稱;

在這裏插入圖片描述
第二題:

select 廠商
from 藥品
group by 廠商
having COUNT(編號)>=3;

在這裏插入圖片描述
第三題:

select 醫生.科室,sum(處方.數量)'青黴素的用量' 
from 醫生,處方,藥品
where 醫生.編號=處方.醫生編號
and 藥品.編號=處方.藥品編號
and 藥品.名稱 = '青黴素'
group by 醫生.科室

union

select  科室,青黴素的用量='0' from 醫生 where 科室 not in (select 醫生.科室
from 醫生,處方,藥品
where 醫生.編號=處方.醫生編號
and 藥品.編號=處方.藥品編號
and 藥品.名稱 = '青黴素'
group by 醫生.科室
) 

在這裏插入圖片描述
第四題:

--組合查詢:
select 醫生.* from 醫生
except
select 醫生.* from 醫生,處方,藥品
where 醫生.編號=處方.醫生編號
and 處方.藥品編號=藥品.編號
and 藥品.名稱='秦黴素';

--嵌套查詢:
select 醫生.* from 醫生
where 編號 not in
(select 醫生編號 from 處方
 where 藥品編號 in
 (select 編號 from 藥品
   where 名稱='秦黴素'
 )
)

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章