sql语句 带条件统计不重复的个数 oracle

例如这张emp员工表idnamesalyouxipid1a1000优秀12a2000优秀13a1500优秀24b1000优秀1我想统计这张表优秀员工的数量合,pid相同的... 例如这张emp员工表
id name sal youxi pid
1 a 1000 优秀 1
2 a 2000 优秀 1
3 a 1500 优秀 2
4 b 1000 优秀 1

我想统计这张表优秀员工的数量合,pid相同的算一条,按员工名字分组
效果为:
name num
a 2
b 1

我这里举例员工表不恰当,但要求效果就是这样。
这是我写的
select name, sum(case
when t.pid = 1 then
1
else
0
end )from emp t group by t.name
没有实现去除pid相同的功能。
展开
 我来答
Ice海Man
2017-03-27 · TA获得超过302个赞
知道小有建树答主
回答量:203
采纳率:0%
帮助的人:202万
展开全部

可以使用数据库 distinct 去出重复数据及count()统计行数的函数来实现改功能

select name,count(distinct pid) as num 
from emp where youxi='优秀' group by name
更多追问追答
追问
youxiu的判断我想放在前面的列里,不想放在后面的where里。就像我问题里我写的一样,然而我却不知道怎么写distinct
追答
select name,count(distinct case when youxi='优秀' then pid else null end) as num
from emp group by name
badkano
2017-03-27 · 知道合伙人体育行家
badkano
知道合伙人体育行家
采纳数:144777 获赞数:885360
团长

向TA提问 私信TA
展开全部
select name,count(distinct pid) from emp group by name;
追问
请仔细看我的问题。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式