group by 分组时,如果高效地统计每一组中某一个字段为null的行数
如下要求:
我需要在分组时统计所有销售单明细中某一个字段为null的行数(为什么要在分组时统计就不说了,不是重点),
如果按照上面的方式,使用嵌套查询,那太慢了,
我想问一下,有没有高效的方法,就是求和sum一样,或和count函数一样,不一定要是系统函数就比如
select id, sum(qt) qts, count(*) counts, (select xxx(*) where qt is null) as nulls from @t s group by id
或
select id, sum(qt) qts, count(*) counts, xxx(xxx) as nulls from @t s group by id
declare @t table(id int null, qt int null)
insert @t values(2, 10);
insert @t values(2, 20);
insert @t values(2, null);
insert @t values(5, 10);
insert @t values(5, null);
insert @t values(5, 30);
insert @t values(6, 20);
insert @t values(8, null);
insert @t values(11, null);
insert @t values(11, 120);
insert @t values(11, null);
insert @t values(12, null);
insert @t values(12, null);
insert @t values(12, null);
insert @t values(13, 30);
insert @t values(13, 40);
insert @t values(13, 50);
select id, sum(qt) qts, count(*) counts, (select count(*) from @t where id = s.id and qt is null) as nulls from @t s group by id
/*
id qts counts nulls
2 30 3 1
5 40 3 1
6 20 1 0
8 NULL 1 1
11 120 3 2
12 NULL 3 3
13 120 3 0
*/
我需要在分组时统计所有销售单明细中某一个字段为null的行数(为什么要在分组时统计就不说了,不是重点),
如果按照上面的方式,使用嵌套查询,那太慢了,
我想问一下,有没有高效的方法,就是求和sum一样,或和count函数一样,不一定要是系统函数就比如
select id, sum(qt) qts, count(*) counts, (select xxx(*) where qt is null) as nulls from @t s group by id
或
select id, sum(qt) qts, count(*) counts, xxx(xxx) as nulls from @t s group by id
...全文
相关推荐
Mysql利用group by分组排序
主要为大家详细介绍了Mysql利用group by分组排序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
Spring Cloud Alibaba源码深度解析:Nacos服务发现与Sentinel流量控制核心机制
本文深度剖析Spring Cloud Alibaba中Nacos服务发现与Sentinel流量控制的源码实现。重点解析Nacos的服务注册/心跳/健康检查/长轮询配置推送机制,以及Sentinel的滑动时间窗口(LeapArray)统计模型和责任链(Slot Chain)设计。涵盖Distro/Raft一致性协议、高并发指标统计、动态规则加载等关键技术点,聚焦分布式系统底层原理与高性能实践。
group by的多种用法
详细介绍了cube、rollup、grouping sets的原理及用法
SQL中GROUP BY的用法
SQL中group by的详细用法
分组查询GROUP BY的使用与SQL执行顺序的讲解
今天小编就为大家分享一篇关于分组查询GROUP BY的使用与SQL执行顺序的讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧


疑难问题
