数据库 统计重复数量 sql

oracle数据库 需要统计一些数 表结构如下
表 table
id name
101 红茶
101 绿茶
101 绿茶
101 绿茶
101 红茶
101 黄茶
102 红茶
102 红茶
102 红茶
102 绿茶
102 绿茶
102 黄茶

需要统计的值是 101 下面有多少 红茶 ,有多少绿茶、黄茶 102下面有多少红茶 多少绿茶、黄茶
结果集是这样

id name1(红茶) name2(绿茶) name3(黄茶)
101 数量 数量 数量
102 数量 数量 数量

这样的sql怎么写
select id,sum(case when name='红亮举茶' then 1 else 0 end) as 数喊'红茶' 

,sum(case when name='绿茶' then 1 else 0 end)
 as'绿茶'  
,sum(case when name='黄茶薯键野' then 1 else 0 end) as '黄茶' from tablename
group by id

select a.id,a.name1 as 'name1(红茶)',a.name2 as 'name2(绿茶)',a.name3 as 'name3(黄茶)'
from
(
select id,count([name]) as name1 from 表 where [name]='红茶' group by id
)a join 
(
select id,count([name]) as name2 from 表 where [name]='绿茶' group by id
)b on a.id=b.id
join 
(
select id,count([name]) as name3 from 表 where [name]='黄茶' group by id
)c on a.id=c.id

按mssql写的,不知道oracle是不是能运行,可能表的激孝尺别名前需要加明高as一类的小问题存在。慎烂