计算唯一组中每个ID的Distinct布尔值

时间:2018-02-22 21:32:34

标签: mysql sql

我有一个表,首先按产品类别对帐户ID进行分组,然后我有一个子查询查看每个帐户ID,并给出一个布尔值,说明它们是否已获批服务。

我希望在查询中添加一列,以分解每个类别中的所有ACCOUNT ID,并让我知道该类别的批准百分比(每个帐户ID的真实结果数量/该产品中IDS的总数量)类)

数据基本上是这样的;

| category      | number of account ID's in category  | 
|---------------|-------------------------------------|
|  Bikes        |              22                     |
|  Snowboards   |              10                     |
|  Skis         |              13                     |



| Account ID  | approved for service? | Category  |
|-------------|-----------------------|-----------|
|  12345      |        TRUE           | snowboard |
|  67891      |        FALSE          | snowboard |
|  17492      |        TRUE           | skis      |
|  42929      |        TRUE           | Bikes     |

理想情况下,我希望查询按产品类别组织“已批准服务”结果并给出一个真正的百分比。在这种情况下,最终结果表应该如下所示;

|   Category  | number of account ID's in Category | approval percentage  |
|-------------|------------------------------------|----------------------|
|  Bikes      |                 1                  |          100%        |
| Snowboards  |                 2                  |          50%         |
|   Skis      |                 1                  |          100%        |

非常感谢任何帮助或提示:)

1 个答案:

答案 0 :(得分:0)

你可以这样做:

select category, avg( approved_for_service = 'True') * 100
from t1 
group by category;

如果approved_for_service是布尔值,则:

select category, avg( approved_for_service ) * 100
from t1 
group by category;