急急急!!!关于SQL的查询、统计问题。
在一个表中有name,class,do_date,is_success.几个字段,do_date是做事情的时间,is_success为是否成功。请问怎样才能用一个sql统计出每个人成功的次数和失败的次数。万分着急,解决即给分。 问题点数:50、回复次数:11Top
1 楼outer2000(天外流星)回复于 2002-04-03 10:03:57 得分 0
select name,sum(is_sucess) from ...Top
2 楼Liusp(夜深千帐灯)回复于 2002-04-03 10:18:57 得分 0
假设is_success为Char(1), '0'表示失败,'1'表示成功,可这样写:
1。失败
Select name,Count(is_success) from tablename
where is_success ='0'
Group by name
1。成功
Select name,Count(is_success) from tablename
where is_success ='1'
Group by name
Top
3 楼hblzq(晃晃悠悠)回复于 2002-04-03 10:21:34 得分 0
成功时is_success为1,失败时为0。同时显示成功的次数和失败的次数。
name | success | un_success
----------------|---------------|----------------
| |Top
4 楼hblzq(晃晃悠悠)回复于 2002-04-03 10:23:14 得分 0
我说得是在一条记录中既有成功次数又有失败次数。Top
5 楼webnumen(webnumen)回复于 2002-04-03 10:23:28 得分 0
如果成功为true
select name,count(is_Success) as Success from table where is_Success=true and dodate>#2000-1-1# and dodate<#2000-12-31#
group by name
失败就为
select name,count(is_Success) as Success from table where is_Success=false and dodate>#2000-1-1# and dodate<#2000-12-31#
group by name
Top
6 楼TFPE()回复于 2002-04-03 10:32:24 得分 10
select name ,
case is_success
when '1' count(is_success),
when '0', count(is_success),
group by name
用CASE好象可以 ,你先试一下Top
7 楼prometheusphinx(白日梦)回复于 2002-04-03 10:40:23 得分 0
//我假设is_success是char字段,T为成功F为失败
select name,
sum(case is_success when 'T' then 1 else 0) sucess,
sum(case is_success when 'F' then 1 else 0) fail
from table
group by nameTop
8 楼prometheusphinx(白日梦)回复于 2002-04-03 10:42:26 得分 0
上面的sql语句我在ms sqlserver上试过了没问题.Top
9 楼prometheusphinx(白日梦)回复于 2002-04-03 10:43:12 得分 20
如果是oracle要用decodeTop
10 楼hblzq(晃晃悠悠)回复于 2002-04-03 11:00:39 得分 0
举个例子说一下decode的用法可以吗?Top
11 楼genphone_ru(哎,什么都要学,真累)回复于 2002-04-03 11:13:20 得分 20
select name,
sum(Decode(is_success,'T',1,0)) AS sucess,
sum(Decode(is_success,'F',1,0)) AS fail
from table
group by nameTop




