那些年被坑过想理工裤衩楼一跃解千愁的数据库

题目:
药品(编号,名称,价格,厂商)
处方(药品编号,数量,医生编号)
医生 (编号,姓名,科室,职称)
1 根据上面基本表的信息定义视图显示每种药品的品名、销售金额
2 观察基本表数据变化时,视图中数据的变化。
3利用视图,查询最畅销的药品。

不是第一问,也不是第二问,对,就是第三问!!!

第一问让我创建个视图,easy,
第二问不就是插入个数据嘛,然后select 一下,easy,
第三问不是让我利用视图嘛,顺理成章成功地利用了第一问的视图稍微查一下不就欧克了嘛
当我偷乐地见了小仙女之后,最可怕的事情发生了,这道题被驳回来了,最畅销的药品不能按销售金额来查,应该按销售数量来查。

那就把用到的表连一起,先按药品.名称sum(处方数量),然后再用聚集函数max写一段sql查询语句不就完事了?
思路很美满,现实很骨感,试了网上,书上各种语法,根本不存在先sum一下,再max一下的sql语法。

怎么来解决这个问题呢?
栽也视图,成也视图,没错了,就是用视图来解决。
步骤1:按药品.名称建立药品总销量的视图(用到了聚集函数sum):

create view 药品总销量(药品,总销量)
as
select   药品.名称 , SUM(处方.数量)
from     药品 left outer join 
          处方 on 药品.编号=处方.药品编号
group by 药品.名称

步骤2:利用步骤1所建视图,使用select语句使用聚集函数max来查询:

select 药品'最畅销药品'
from 药品总销量
where 总销量 in
(select MAX(总销量)
from 药品总销量)
发布了42 篇原创文章 · 获赞 30 · 访问量 7198

猜你喜欢

转载自blog.csdn.net/Mr____Cheng/article/details/103189708