Я посмотрел на рис.Таким образом, у вас могут быть повторяющиеся действия с тем же именем.И вы хотите узнать количество действий, которые имеют одно и то же уникальное имя.
Возможно, вы захотите сгруппировать результаты по имени:
GROUP BY NameOfAct
И включить имена действий и их количество врезультаты запроса:
SELECT NameOfAct, COUNT(*) AS ActCount
(Поскольку столбец act_id не включен в группы, его необходимо опустить в SELECT. DISTINCT также больше не требуется, поскольку все группы уже уникальны.)
Наконец, вы можете отсортировать данные (вероятно, по убыванию, чтобы получить действия с наибольшим счетом сверху):
ORDER BY ActCount DESC
Ваш полный запрос станет примерно таким:
SELECT NameOfAct, COUNT(*) AS ActCount
FROM Acts
GROUP BY NameOfAct
ORDER BY ActCount DESC
Редактировать:
Кстати, вы используете поле "act_id" в предложении SELECT.Это несколько сбивает с толку.Если вы хотите узнать количество, вы хотите просмотреть либо полные данные таблицы, либо сгруппировать данные таблицы в более мелкие группы (с предложением GROUP BY).Затем вы можете использовать агрегатные функции для получения дополнительной информации об этих группах (или всей таблице), таких как счетчики, средние значения, минимумы, максимумы ...
Информация об отдельной записи, например, идентификатор действия в вашем случае,Обычно это не важно, если вы хотите использовать статистические / статистические методы для сгруппированных данных.Предположим, ваш запрос возвращает имя действия, которое используется 10 раз.Затем у вас есть 10 записей в вашей таблице, каждая с уникальным act_id, но с тем же именем.
Если вам нужен только один act_id, который представляет каждое имя группы / действия (и предполагается, что act_id является полем автонумерации),Вы можете включить последнее / наибольшее значение act_id в запрос, используя функцию агрегирования MAX:
SELECT NameOfAct, COUNT(*) AS ActCount, MAX(act_id) AS LatestActId
(остальная часть запроса остается прежней.)