作业帮 > 综合 > 作业

group by 和 distinct 的问题

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/04/28 18:19:34
group by 和 distinct 的问题
select a.partner as pcode, count(distinct(a.deviceid)) as count
-- into num4
from test a
where a.activationtime >= to_date('2011-4-17', 'yyyy-mm-dd')
and a.activationtime < to_date('2011-4-17', 'yyyy-mm-dd') + 1
and a.type = 2
and a.status = 1
group by a.partner
我想得到总数 ,可是.用group bu 不要的话 在统计的时候
就不会distinct 我想去除重复 然后得到结果
而且我还要分组
select a.partner as pcode,count(1) as count
-- into num4
from test a
where a.activationtime >= to_date('2011-4-17','yyyy-mm-dd')
and a.activationtime < to_date('2011-4-17','yyyy-mm-dd') + 1
and a.type = 2
and a.status = 1
group by a.partner
正常的count()就可以了啊
再问: 汗 我想问您 。 您这样 和我count(distinct(a.deviceid)) 区别大吗??? 我的意思就是group by 以后去除重复! 可能是我没说好吧! 记得 是去除重复
再答: count(distinct(a.deviceid))和GROUP BY本身就是一个冲突 而因为已经GROUP BY a.partner了,count(1)查询出的数据,就是按照partner分组,而这个partner数据在表中重复的个数了。 你按照partner分组,就已经实现了去掉deviceid重复结果了。 您想想GROUP BY的结果,想想这个的用法 如果按照某个字段分组,那结果中,就绝对不会出现这个分组字段重复的行 而count(1),得到的结果,就是这个分组字段,在原有数据中重复的行数了。
再问: 我知道你说的意思 .. 正因为两者有冲突 !但是我又不是了解 所以还望您指教下! 另外就是,我用了您说的方法 是没有去除重复的 如果 可以的话 麻烦您给个sql 谢谢
再答: 您好,麻烦您贴个表结构出来吧。 看您的语句我理解是,查询每个partner下deviceid的个数 而表结构麻烦您显示一下
再问: 这个是我想要得到的总数
再答: 晕,您的PCODE哪去了? 不是要按照这个分组,每个PCODE下的DEVICEID的个数么? 你这个结果只有一行,难道整个表只有一个PCODE?
再问: 呵呵!不好意思!网速有点不好! 算了!现在我还有别的要忙!不过!很谢谢您