adoquery连接数据库查询数据表。
表名:table1
字段:网桥编号 pos编号 重传次数
nb_no pos_no resendnum
查询得到如下字段:
nb_no , pos_no , commlv, nstop
其中:commlv指通讯受阻率,nstop指脱机次数
commlv=某个pos的重传次数之和除以表中具有该pos的记录个数
nstop =表中pos重传次数大于10的记录的个数
另外,表中的字段没有全部列出,因为其他的不需要。
pos归属于网桥,各个网桥下的pos编号是不相同的。
举个例子:
原是数据:
nb_no pos_no resendnum
1 1 0
1 1 1
1 2 12
2 3 1
最后查询得到如下数据;
nb_no pos_no commlv nstop
1 1 0.5 0
1 2 12 1
2 3 1 0
这样的数据怎么能够得到?
表名:table1
字段:网桥编号 pos编号 重传次数
nb_no pos_no resendnum
查询得到如下字段:
nb_no , pos_no , commlv, nstop
其中:commlv指通讯受阻率,nstop指脱机次数
commlv=某个pos的重传次数之和除以表中具有该pos的记录个数
nstop =表中pos重传次数大于10的记录的个数
另外,表中的字段没有全部列出,因为其他的不需要。
pos归属于网桥,各个网桥下的pos编号是不相同的。
举个例子:
原是数据:
nb_no pos_no resendnum
1 1 0
1 1 1
1 2 12
2 3 1
最后查询得到如下数据;
nb_no pos_no commlv nstop
1 1 0.5 0
1 2 12 1
2 3 1 0
这样的数据怎么能够得到?
sum(resendnum) / count(*) ,
sum( when case resendnum >10 then 1 else 0 end ) as nstop,
group by pos_no
SUM(resendnum)/SUM(pos_no) AS commlv,
SUM(CASE WHEN resendnum > 10 THEN 1 ELSE 0 END) AS nstop
FROM table1
GROUP BY nb_no
SUM(resendnum)/SUM(1) AS commlv,
SUM(CASE WHEN resendnum > 10 THEN 1 ELSE 0 END) AS nstop
FROM table1
GROUP BY pos_no
from table1
group by nb_no, pos_no
order by nb_no, pos_no
发的时候一个人没有,现在就4楼了
SET QUOTED_IDENTIFIER ON
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
SET ARITHABORT ON
SET NUMERIC_ROUNDABORT OFF
SET CONCAT_NULL_YIELDS_NULL ON
SET ANSI_NULLS ON
SET ANSI_PADDING ON
SET ANSI_WARNINGS ON
COMMIT
BEGIN TRANSACTION
CREATE TABLE NB_TBL (
NB_NO VARCHAR(10) NULL ,
POS_NO VARCHAR(10) NULL ,
RESENDNUM INT NULL ,
COMMLV NUMERIC(28,8) NULL ,
NSTOP INT NULL
) ON [PRIMARY]
IF @@ERROR<>0 BEGIN
ROLLBACK TRAN
GOTO ON_ERROR
END COMMIT
ON_ERROR:
SELECT 1 AS Error_OK
GOinsert NB_Tbl select '1' , '1' , 0
union
select
'1' , '1', 1
union
select '1' , '2' , 12
union select '2' , '3' , 1select A.NB_NO ,A.POS_NO,
CommLv= Convert(numeric(28,8), A.HH) /Convert(numeric(28,8), A.KK),
nstop=(case when HH>10 then KK else 0 end)
from (select sum(resendnum ) As HH ,Count(*) as KK, NB_NO,Pos_No from NB_Tbl group by NB_NO,POS_NO) A
zjy6631(刘阿木) ,你的我没有尝试,辛苦你了。
需要声明的一点,我用的数据库是oracle8,oracle8上面不支持CASE WHEN THEN ELSE END,
我用的是decode。