两个表 一个是书表book(bookid,typeid) 还有类型表type(typeid,typename)
现在就是想得到每种类型有多少本书,就是得到(typename,个数)
我这样写的select typename,count(*) from book,type where book.type=type.typeid group by book.typeid,typename
但是实际得到的个数比实际朵很多,我估计是连接的问题,求解~~
现在就是想得到每种类型有多少本书,就是得到(typename,个数)
我这样写的select typename,count(*) from book,type where book.type=type.typeid group by book.typeid,typename
但是实际得到的个数比实际朵很多,我估计是连接的问题,求解~~
from book,type
where book.type=type.typeid group by typeid ,typename你group by bookid 干啥,难道要统计每本书的数量?
你想按哪个字段group 就写哪个字段,其他的不要加,要会出现很神奇的效果
from bd_vip_custtype b
left join
(select a.viptype_id,count(*) vcount from bd_vip_cust a
group by a.viptype_id
) temp on b.viptype_id = temp.viptype_id
这个是我的做法,看看你能不能看懂,
解释一下,
select from 类型表
left join (
select from 书表 --查询出类型id 和count
)
left join bd_vip_cust b on b.viptype_id = a.viptype_id
group by b.viptype_id
其一,逻辑上,看看是否book表与type表的关系:一对多?多对多?
其二,语法上,“book.type=type.typeid”,其中,这里面book.type是不是要写成book.typeid呢?最后,其实在统计分析方面,oracle和其他数据库系统有很大的不同,oracle有他自己的分析函数来专门处理统计分析的;比如,你的问题就可以用sum()over(partition by tpyename)来实现了。
select distinct typename 类型,count(1)over(partition by typename)个数 from c order by tpyename;