Подсчитайте отличительные логические значения для каждого идентификатора в уникальных группах

0

У меня есть таблица, которая сначала группирует идентификатор учетной записи по категории продукта, а затем у меня есть запрос, который смотрит на каждый идентификатор учетной записи и дает логическое значение относительно того, одобрены ли они для службы.

Я хочу добавить столбец в запрос, который разбивает все идентификаторы ACCOUNT в каждой категории и дает мне знать процент одобрения для этой категории (количество истинных результатов на идентификатор учетной записи/общий объем IDS в этой категории)

Данные по существу выглядят так:

| category      | number of account ID 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 in Category | approval percentage  |
|-------------|------------------------------------|----------------------|
|  Bikes      |                 1                  |          100%        |
| Snowboards  |                 2                  |          50%         |
|   Skis      |                 1                  |          100%        |

Любая помощь или советы были бы весьма признательны :)

Теги:

1 ответ

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;
  • 0
    Спасибо за вклад @gordonlinoff :) Я получаю эту ошибку при попытке усреднить логическое значение, хотя - скорее всего потому, что оно пытается обработать логическое значение как функцию bigint. function avg(boolean) does not exist Hint: No function matches the given name and argument types. You may need to add explicit type casts.
  • 0
    @MikeTaylor. , , В этом случае сравнение не требуется.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню