欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

求一条sql优化,不要嵌套

更新时间: 2014-01-05 02:17:21 责任编辑: Author_N1

 

求一条SQL优化,不用嵌套
;with #t as (
select 'gao_ps' ss,'192.168.0.1' ip,1 is_reg,1 has_code
union all select 'gao_ps','192.168.0.1',1,1
union all select 'gao_ps','192.168.1.1',1,1
union all select 'gao_ps','192.168.1.1',0,1
)
/* 从这里开始有没有办法不用嵌套 */
select ss,SUM(注册个数) 注册个数,
SUM(弹代码数) 弹代码数,
SUM(case when 注册个数>=2 then 注册个数 else 0 end) 重复IP注册数
from (
select ss,ip,COUNT(1) 注册个数,
SUM(case when has_code=1 then 1 else 0 end) 弹代码数
from #t 
where is_reg=1
group by ss,ip) a 
group by ss


有没有办法一条SQL搞定不用嵌套或者零时表,求高手解答!
--参考方法--
貌似没办法不嵌套
--参考方法--
聚合函数不能嵌套,所以你这个不能一句话搞定
--参考方法--
这个不能不嵌套,只能这么做,你写的已经不错了。
--参考方法--
try this,

with #t as 
(select 'gao_ps' ss,'192.168.0.1' ip,1 is_reg,1 has_code union all 
 select 'gao_ps','192.168.0.1',1,1 union all 
 select 'gao_ps','192.168.1.1',1,1 union all 
 select 'gao_ps','192.168.1.1',0,1
)
select ss,
       count(1) '注册个数',
       sum(case when has_code=1 then 1 else 0 end) '弹代码数',
       count(distinct ip) '重复IP注册数'
 from #t
 where is_reg=1
 group by ss
 
/*
ss     注册个数       弹代码数     重复IP注册数
------ ----------- ----------- -----------
gao_ps  3           3            2

(1 row(s) affected)
*/

--参考方法--
引用:
try this,

with #t as 
(select 'gao_ps' ss,'192.168.0.1' ip,1 is_reg,1 has_code union all 
 select 'gao_ps','192.168.0.1',1,1 union all 
 select 'gao_ps','192.168.1.1',1,1 union all 
 select 'gao_ps','192.168.1.1',0,1
)
select ss,
       count(1) '注册个数',
       sum(case when has_code=1 then 1 else 0 end) '弹代码数',
       count(distinct ip) '重复IP注册数'
 from #t
 where is_reg=1
 group by ss
 
/*
ss     注册个数       弹代码数     重复IP注册数
------ ----------- ----------- -----------
gao_ps  3           3            2

(1 row(s) affected)
*/
唐诗你好像理解错了,他这个语句重复IP注册数是根据计算的注册个数来判断的,所以一句搞不定的啊
--参考方法--
引用:
唐诗你好像理解错了,他这个语句重复IP注册数是根据计算的注册个数来判断的,所以一句搞不定的啊

从字段名"重复IP注册数"来理解,其算法应该是ip去重复后的个数,即count(distinct ip).

从楼主的代码看: SUM(case when 注册个数>=2 then 注册个数 else 0 end)
 应该是单ip注册个数大于等于2的注册个数总和.

二者好像不太一致喔.
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:17:21
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/8032/
本文WWW.DOC100.NET DOC100.NET版权所有。