一句SQL可不可以取总量和指定条件的占比
一句SQL能否取总量和指定条件的占比?
数据库结构如
id tid ok
1 10 0
2 10 1
3 11 0
4 10 0
比如取tid=10的数量和tid=0且ok=1的数量
结果为:1/3
用一句SQL获取到这个结果
3代表tid=10的总记录数,1代表ok=1的总记录数
------解决思路----------------------
------解决思路----------------------
------解决思路----------------------
/*0.33333333333*/
------解决思路----------------------
试试这个:
数据库结构如
id tid ok
1 10 0
2 10 1
3 11 0
4 10 0
比如取tid=10的数量和tid=0且ok=1的数量
结果为:1/3
用一句SQL获取到这个结果
3代表tid=10的总记录数,1代表ok=1的总记录数
------解决思路----------------------
SELECT Convert(varchar(11),SUM(OK))+
'/'+
Convert(varchar(11),COUNT(*)) result
FROM table1
WHERE tid = 10
result
-----------------------
1/3
------解决思路----------------------
SELECT ltrim(SUM(OK))+
'/'+
ltrim(COUNT(*)) result
FROM table1
WHERE tid = 10
------解决思路----------------------
SELECT COUNT(CASE WHEN ok=1 THEN 1 END)*1./COUNT(1)
FROM TB
WHERE tid=10
/*0.33333333333*/
------解决思路----------------------
试试这个:
select count(case when tid = 10 then 1 end) / count(case when tid = 0 and ok = 1 then 1 end)
from t