SQL-запрос для получения подсчета того, сколько элементов имеют каждое возможное значение для данного столбца - PullRequest
0 голосов
/ 26 сентября 2010

Хорошо, у меня есть (SQLite) таблица с именем log, в которой один столбец (время) является меткой времени эпохи Unix (другие столбцы не имеют значения для моих целей).Это записи журнала с метками времени.

Я пытаюсь подсчитать, сколько элементов регистрируется в час (за все время - мне все равно делать это только в течение определенного дня или чего-то еще; япытаюсь получить представление о плотности активности в течение всего (1003 * среднего дня).Я успешно преобразил их в часы с помощью запроса SELECT STRFTIME('%H', DATETIME(time, 'unixepoch', 'localtime')) FROM log;, который затем дает мне огромный список чисел 0-23, которые я могу набрать uniq -c, чтобы получить число событий в час.

Однако (допускаю больше из-за упрямства, чем из-за практической необходимости), я хочу сделать этот шаг подсчета в SQL.Мой мозг дошел до того, что я узнал, что мне, вероятно, придется сделать какое-то самостоятельное объединение, чтобы получить только уникальные значения для сгенерированного столбца часов, но это то, в чем он остановился.

Ответы [ 2 ]

2 голосов
/ 26 сентября 2010
SELECT STRFTIME('%H', DATETIME(time, 'unixepoch', 'localtime')), 
COUNT(anotherField)
FROM log
GROUP BY STRFTIME('%H', DATETIME(time, 'unixepoch', 'localtime'));

Примечание: я не работал с SQLite.Тем не менее, он поддерживает GROUP BY и, следовательно, это должно работать.

1 голос
/ 26 сентября 2010

зачем использовать COUNT (anotherField)?

Использовать SELECT [your expression], COUNT(*) FROM log GROUP BY [your expression]

...