我希望我能找到一个允许我拥有相同结果行的请求,使用不同的子句获得2个值:
例如,假设我有这张表:
ID |VAL
----------
0 | 1
1 | 0
2 | 0
3 | 1
4 | 0
5 | 0
我希望我可以在同一个请求中选择val = 1的行数,总行数,(如果可能的话,另一个计数的总百分比)将给出这样的结果集:
nb_lines | nb_val_1 | ratio
---------------------------
6 | 2 | 0.5
我尝试过类似的事情:
select count(t1.ID), (select count t2.ID
from table t2 where t2.val = 1
)
FROM table t1
但显然,这种语法不存在(并且它不会给我这个比例)。我怎么能执行这个请求?
答案 0 :(得分:2)
尝试使用CASE的查询仅计算我们需要的那些行。
SELECT nb_lines,nb_val_1,nb_val_0, nb_val_1/nb_val_0 FROM
(SELECT COUNT (t1.ID) nb_lines,
COUNT (CASE
WHEN t1.val = 1
THEN 1
ELSE NULL
END) nb_val_1,
COUNT (CASE
WHEN t1.val = 0
THEN 1
ELSE NULL
END) nb_val_0
FROM tabless t1);