我有一张table attempts
像这样有几百张唱片。它记录了一些交易。事务的名称很重要,错误表明事务未成功。
| id | name |error| data |
|----|-------|-----|------|
| 1| sara | 0 | bla |
| 2| sara | 1 | bla |
| 3| sara | 0 | bla |
| 4| john | 1 | bla |
| 5| paul | 0 | bla |
| 6| paul | 0 | bla |
| 7| john | 0 | bla |
我要做的是通过按“name”分组来获得错误率和成功率。例如,对于名称“sara”,我有三个事务,两个是成功的(因为error是0(false)),一个是不成功的(因为error是1(true))。我想得到成功率或错误率的百分比。
成功率是三分之二
错误率是三分之一
我有点困惑,因为我不知道该怎么做:
SELECT COUNT(id) AS 'count', name, error
FROM attempts
GROUP BY name, error
ORDER BY name
查询返回如下结果集:
|count| name |error|
|----|-------|-----|
| 2| sara | 0 |
| 1| sara | 1 |
| 1| john | 1 |
| 1| john | 0 |
| 2| paul | 0 |
但我不知道怎么计算利率,我想要这样的东西
|count| name |error|success|
|----|-------|-----|-------|
| 3| sara | 1 | 2 |
| 2| john | 1 | 1 |
| 1| paul | 0 | 1 |
有人能帮我吗?
3条答案
按热度按时间b4lqfgs41#
可以使用聚合:
如果想要获得成功率,可以使用:
ykejflvf2#
试试下面这个。
select name, cont(*), sum(case when error=1 then 1 else 0 end) as error, sum(case when error=0 then 1 else 0 end) as success from attempts group by name;
fslejnso3#
请运行以下代码。你会得到你想要的结果。第一部分用于将数据插入#tmp表。