不同数值范围查询怎么做?
查询一个字段中值分别0-3,3-6,6-15,15-30,>30的记录的个数怎么做? 问题点数:20、回复次数:11Top
1 楼wwwwb()回复于 2006-03-08 10:18:24 得分 20
将表及要求结果贴出来看看Top
2 楼wwwwb()回复于 2006-03-08 10:27:31 得分 0
参考:
Partition 函数示例
本示例假设您有一个“Orders”表,且里头含有一个“Freight”字段。程序建立一个“选择”来计算运费落在某些范围内的订单数量。Partition 函数是用来确定这些范围,然后调用 SQL Count 函数来计算在每个范围内的订单数量。本示例中,Partition 函数的参数值为 start = 0,stop = 500,interval = 50。第一个范围会是 0:49,每隔 50 一个范围,依次而下直到运费为 500 为止。
SELECT DISTINCTROW Partition([freight],0, 500, 50) AS Range,
Count(Orders.Freight) AS Count
FROM Orders
GROUP BY Partition([freight],0,500,50);
Top
3 楼linyany()回复于 2006-03-08 10:29:35 得分 0
表大概这样:
呼叫 时长
1 2
2 5
3 6
4 10
5 1
6 8
需要结果
时长<3 3<时长<6 6<时长15 15<时长30 时长>30
(次数) 2 2 2 0 0Top
4 楼linyany()回复于 2006-03-08 10:30:20 得分 0
范围没有规律怎么办?Top
5 楼wwwwb()回复于 2006-03-08 11:05:30 得分 0
SELECT sum(iif(时长<=3,1,0)) AS 时长3, sum(iif(时长>3 and 时长<=6,1,0)) AS 时长3to6, sum(iif(时长>6 and 时长<=15,1,0)) AS 时长6to15, sum(iif(时长>15 and 时长<=30,1,0)) AS 时长15to30, sum(iif(时长>30,1,0)) AS 时长30
FROM b08
GROUP BY 1;
Top
6 楼linyany()回复于 2006-03-08 11:06:56 得分 0
GROUP BY 1 什么意思Top
7 楼linyany()回复于 2006-03-08 11:18:27 得分 0
说数据类型不匹配.我是要数量,将你的sum 改成 countTop
8 楼changechange(http://access911.net 是我的个人网站,欢迎光临)回复于 2006-03-08 11:21:53 得分 0
非常简单,你要做的只是写不同的WHERE 子句,然后将他们组合起来而已。用 ASNI SQL 就可以做到。
select 呼叫 as 小于3,0 as 大于3小于6,0 as 大于6小于15,0 as 大于15小于30,0 as 大于30 from where 时长<3
union all
select 0 小于3,呼叫 as 大于3小于6,0 as 大于6小于15,0 as 大于15小于30,0 as 大于30 from where 时长>3 and 时长<6
union all ....
一直持续下去
如果你要汇总只要写一个 sum语句即可
select sum(小于3),sum(大于3小于6),sum(大于6小于15),sum(大于15小于30),sum( 大于30 ) from (
select 呼叫 as 小于3,0 as 大于3小于6,0 as 大于6小于15,0 as 大于15小于30,0 as 大于30 from where 时长<3
union all
select 0 小于3,呼叫 as 大于3小于6,0 as 大于6小于15,0 as 大于15小于30,0 as 大于30 from where 时长>3 and 时长<6
union all ....)Top
9 楼changechange(http://access911.net 是我的个人网站,欢迎光临)回复于 2006-03-08 11:22:18 得分 0
你要 COUNT 也可以Top
10 楼linyany()回复于 2006-03-09 10:09:28 得分 0
太复杂了吧,有没有简单点的,用IIF什么的?Top
11 楼changechange(http://access911.net 是我的个人网站,欢迎光临)回复于 2006-03-09 12:40:43 得分 0
太复杂了吧,有没有简单点的,用IIF什么的?
--------请注意!用 IIF 才是最复杂的,因为它涉及到 JET DB / ACCESS JET SQL /VBA 三方面!
而用 UNION ALL 只涉及到 JET DB ,该语句通用性非常强Top




