SQL печать подсчитывается по строкам с условиями внутри count - PullRequest
1 голос
/ 17 июня 2020

Я новичок в SQL. У меня есть таблица с данными, как показано ниже

+-----+-------+
|Name | value |
+-----+-------+
|AAA  |  25   |
|AAA  |  60   |
|BBB  |  40   |
|BBB  |  200  |
|CCC  |  1010 |
|CCC  |  451  |
|CCC  |  45   |
|DDD  |  20   |
+-----+-------+

Я пытаюсь получить следующий результат

+-------+-------+
|Name   | COUNT |
+-------+-------+
|AAA    | 2     |
|DDD    | 1     |
|OTHERS | 5     |
+-------+-------+

Как я могу добиться этого в SQL ??? Заранее спасибо

1 Ответ

1 голос
/ 17 июня 2020

Вы можете использовать условное выражение:

select
    case when name = 'AAA' then name else 'OTHERS' end new_name,
    count(*) cnt
from mytable
group by case when name = 'AAA' then name else 'OTHERS' end

Некоторые базы данных (а именно, MySQL и MariaDB) поддерживают повторное использование псевдонимов столбцов, определенных в предложении select в предложении group by, поэтому вы можно упростить предложение group by как:

group by new_name

Другие базы данных поддерживают позиционные параметры (Postgres и Oracle - два примера):

group by 1
...