SQLite3 подсчитывает, сколько отсчетов?

#database #sqlite #count

#База данных #sqlite #подсчитайте

Вопрос:

Я изучаю SQLite3 и у меня проблемы с этим конкретным выводом. Допустим, у меня есть столбец типа:

 user0
user1
user1
user2
user2
user3
user3
user3
user4
user4
user4
user4
  

Я хотел бы подсчитать, сколько раз пользователь появляется в столбце и имеет вывод, подобный:

 1 | 1
2 | 2
1 | 3
1 | 4
  

Значение: 1 пользователь появляется 1 раз, 2 пользователя появляются 2 раза, 1 пользователь появляется 3 раза, 1 пользователь появляется 4 раза.

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

Комментарии:

1. Я думаю, что «группа по» может вам помочь

2. GROUP BY и count() , да. Прочитайте о функциях группировки и агрегирования в вашем любимом руководстве по SQL.

Ответ №1:

Вам group by нужно один раз получить счетчики 1-го столбца, который вам нужен, а затем снова по этому результату:

 select count(*) total, counter
from (
  select count(*) counter 
  from tablename
  group by col
)
group by counter
  

Смотрите демонстрацию
Результаты:

 | total | counter |
| ----- | ------- |
| 1     | 1       |
| 2     | 2       |
| 1     | 3       |
| 1     | 4       |
  

Комментарии:

1. Спасибо! Это сработало, только изменил порядок [count ( ) total, counter] на [counter, count) ) total], чтобы получить точно такой же результат, как в моем примере, на случай, если кому-то это понадобится 🙂

2. Это порядок вашего ожидаемого результата. Вы можете проверить демонстрацию.

3. Если этот ответ решил вашу проблему, подумайте о том, чтобы принять его.

Ответ №2:

Вот небольшой пример использования GROUP BY и COUNT()-функции. Я использую MSSQL, но в SQLITE3 должно быть почти то же самое. Это таблица, которую я использую:

введите описание изображения здесь

 select count([name]), [name] from Test
group by [name]
  

Это результат:

введите описание изображения здесь