Как подсчитать каждый DISTINCT?

Я пытаюсь подсчитать, сколько из каждого попадания я получаю от разных. Итак, начало:

SELECT DISTINCT category FROM dbtable

Это дает мне 6 разных категорий, отлично. Теперь я хочу подсчитать каждую строку, чтобы результат выглядел так:

category, 4
category, 8
category, 12
category, 72
category, 5
category, 65

Я пробовал:

SELECT COUNT (DISTINCT category) FROM dbtable

Это дает мне сумму первой категории ...

Здесь я застрял. :)

Всего 4 ответа


Использовать GROUP BY ?

SELECT category, COUNT(*) AS count
FROM dbtable
GROUP BY category;

Используйте группу и подсчитывайте, как:

SELECT category,count(category) FROM dbtable GROUP BY category

Вам нужно добавить GROUP BY :

SELECT category, COUNT(*) FROM dbtable GROUP BY category

Обратите внимание:

  • Вам нужна GROUP BY для сбора данных, поэтому сервер БД может подсчитывать каждую строку и фильтровать ее по вашим категориям, без этого сервер не знает, какие строки подсчитывать;

  • Вы должны помнить, что предложение Group By всегда будет в конце SQL-запроса, как и предложение Order by.

  • Вам не нужно DISTINCT, потому что GROUP BY выполняет эту работу. (Спасибо jarlh)

Вы можете найти больше объяснений с помощью скриптов: https://www.w3schools.com/sql/sql_groupby.asp


Попробуй это :-

  SELECT category, COUNT(1) FROM dbtable GROUP BY category 

И если у вас требуется конкретная запись счетчика, попробуйте это

   SELECT category, COUNT(1) FROM dbtable GROUP BY category having count(1)>10

Есть идеи?

10000