Частота подсчета всех предметов в ЦКЛ - PullRequest
2 голосов
/ 17 мая 2011

Предположим, у меня есть таблица, например:

UserID    Meh    Meh //meh is some column
````````````````````
01        ...    ...
01        ...    ...
03        ...    ...
05        ...    ...
05        ...    ...
01        ...    ...
03        ...    ...

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

select UserId from NinjaTable group by UserId 

, но это дает мне то, чего я не знаю или не понимаю.Я хочу, чтобы результат был таким:

UserID    Frequency
```````````````````
01        3
03        2
05        2

Ответы [ 5 ]

3 голосов
/ 17 мая 2011

ты почти там.

Вы группируете правильно, просто добавьте счетчик, чтобы выбрать предложение.

select UserId, COUNT(*) from NinjaTable group by UserId order by COUNT(*) desc

это должно сделать это на самом деле.

edit: спасибо @abe за указание порядка.

1 голос
/ 17 мая 2011

Попробуйте что-то вроде:

select UserId, count(*) as Frequency from NinjaTable group by UserId

Приклейте order by UserId, если хотите.

0 голосов
/ 17 мая 2011

Вы бы использовали оператор group by:

SELECT UserId, COUNT(1) FROM MyTable GROUP BY UserId ORDER BY COUNT(1) DESC

Это позволит сгруппировать все пользовательские идентификаторы, найти количество строк (частоту для вас), а затем отсортировать набор результатов по убыванию частоты.

0 голосов
/ 17 мая 2011

Я думаю, что вы действительно хотите использовать функцию COUNT:

SELECT UserID, COUNT(*) AS Frequency FROM NinjaTable GROUP BY UserID
0 голосов
/ 17 мая 2011

Попробуйте

select UserID, Count(*) 
from theTable 
group by UserID
...