求sql语句 统计
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求sql语句 统计相关的知识,希望对你有一定的参考价值。
N条数据中有下面几条数据
SNO_NUMBER TIME_T OLD_GROUP_ID GROUP_ID
1000325789 2009-12-25 14:00 419 351
1000325789 2009-12-25 14:17 351 419
1000325789 2009-12-25 14:17 419 351
1000325789 2009-12-25 14:18 351 419
数据说明:SNO_NUMBER :流水号
TIME_T :操作时间
OLD_GROUP_ID :原组
GROUP_ID :目标组
主要是OLD_GROUP_ID和GROUP_ID列,数据的意思是:从OLD_GROUP_ID组派到GROUP_ID组 既
第一条数据:数据从419组派到组351
第二条数据:数据从351组派到组419
第三条数据:数据从419组派到组351
第四条数据:数据从351组派到组419
这四条数据的SNO_NUMBER是相同的(对同一个事情来回的转派)! 可以说是踢皮球
第一条数据和第二条数据是皮球踢了 1个来回!!
第三条数据和第四条数据是皮球踢了第2个来回!!
[color=#FF0000]问:[/color]能否用一个sql语句统计出踢了几个来回?如果是三条数据时则为1.5个来回!
select SNO_NUMBER as 事情,case when count(*)%2=0 then count(*)/2 else count(*)/2+0.5 end as 数目 from 表 group by SNO_NUMBER
统计所有的事情转派总数:
select case when count(*)%2=0 then count(*)/2 else count(*)/2+0.5 end as 数目 from 表
这是sqlserver的写法
其实总的说来就是数据条目数的二分之一,只不过奇数情况下需要加0.5 参考技术B select sno_number, count(*)/2 as 来回 from (
select SNO_NUMBER , OLD_GROUP_ID as id from biao
union all
select SNO_NUMBER , GROUP_ID as id
)本回答被提问者采纳 参考技术C select (count(*)/2) as aa from [biao] where SNO_NUMBER=1000325789
以上是关于求sql语句 统计的主要内容,如果未能解决你的问题,请参考以下文章
在PL/SQL中 使用 case when 语句求两个条件合并统计的平均值
怎样用mysql语句 查询一个表里面的一个字段下的2条数据。求大神指教!