0

我希望我能找到一个请求,允许我在同一结果行上使用不同的子句获得 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

但显然,这种语法不存在(它不会给我比率)。我怎么能执行这个请求?

4

1 回答 1

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);
于 2013-05-28T10:14:41.903 回答