Подсчитайте каждое уникальное значение - PullRequest
0 голосов
/ 16 июня 2020

Я использую SQL в MS-Access. Я хотел бы подсчитать каждое уникальное значение из столбца код в моей таблице.

это моя таблица:

| **code** |   **description**      |      **date**    | **level** |  
|  AAA     |       example          |    01/01/2020    |     x     |
|  AAA     |       example          |    02/05/2020    |     z     |
|  BBB     |       example          |    09/09/2020    |     y     |
|  CCC     |       example          |    12/10/2020    |     z     |

ожидаемый результат:

    | **code** |   **description**      |      **date**    | **level** | **count** |
    |  AAA     |       example          |    01/01/2020    |     x     |    2      |
    |  AAA     |       example          |    02/05/2020    |     z     |    2      |
    |  BBB     |       example          |    09/09/2020    |     y     |    1      |
    |  CCC     |       example          |    12/10/2020    |     z     |    1      |

Я знаю, что работает следующий запрос:

SELECT code, count(*) FROM table GROUP BY code;

Но я хотел, чтобы выбор подсчитал столбец code , а также отобразил все остальные столбцы. Я создал этот запрос:

SELECT code, description, date, level, count(code) 
FROM table 
GROUP BY code, description, date, level;

Но он показывает все строки в столбце «count» как 1 (даже те, которые содержат повторяющиеся значения).

1 Ответ

3 голосов
/ 16 июня 2020

Вы хотите показать все строки (без агрегирования). Вы хотите показать дополнительный столбец с агрегацией. Вы можете выполнить это агрегирование в подзапросе.

SELECT
  code, description, date, level, 
  (SELECT COUNT(*) FROM table AS t2 WHERE t2.code = t.code) AS code_count
FROM table AS t
ORDER BY code, date;

Что касается вашего собственного запроса: вы выполняете псевдоагрегирование. Поскольку все строки отличаются друг от друга, ваш GROUP BY во всех столбцах сохраняет исходные строки. Затем вы подсчитываете, сколько строк вы найдете в каждой «группе», которая всегда равна 1 (сама строка).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...