求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个来回!

参考技术A 统计每个事情来回的转派数:
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 语句求两个条件合并统计的平均值

SQL语句按年龄分组,统计各个年龄的人数

sql求平均值

怎样用mysql语句 查询一个表里面的一个字段下的2条数据。求大神指教!

求SQL语句,统计一张表格中,某一时间段,例如连续10天,每间隔2小时,该表中增加的记录条数。

SQL的一些查询语句