#sqlite
#sqlite
Вопрос:
У меня есть огромные данные из 5000 строк, и я пытаюсь найти темпы роста за месяц для каждого города за период с июня по август. Мои данные
id | host_id | Host_since | area
1 121 2017-08-31 LA
2 243 2017-08-15 SF
3 243 2017-06-12 SF
4 100 2017-07-13 NYC
5 300 2017-05-19 CHI
6 250 2017-07-20 MIN
7 135 2017-08-25 LA
.
.
.
Меня не волнует дублирующийся host_id, единственное, что я хочу, это видеть общее количество идентификаторов, созданных за месяц.Итак, я исправил свой запрос, но он по-прежнему выдает ошибку рядом с «OVER». Не удалось выяснить, в чем проблема. Не знаю, что я делаю не так, поскольку запрос выглядит идеально для меня? Любая помощь была бы отличной.
Select strftime('%Y-%m', host_since) as month, area,
count(id) as count,
100 * (count(id) - lag(count(id), 1) over (partition by area,
order by strftime('%Y-%m', host_since))) / lag(count(id), 1) over
(partition by area, order by strftime('%Y-%m', host_since)))
as growth
from listings
where host_since between '2017-06-01' and '2017-08-31'
group by 1,2
order by 1;
Ошибка SQLITE_ERROR: рядом с «over»: синтаксическая ошибка
Комментарии:
1. Должно ли это
cast(id)
бытьcount(id)
? Дляcast()
этого не хватаетAS
части.2. обновлено. по-прежнему отображается ошибка около завершения.
3. Вы используете старую версию sqlite? С прошлой осени он получил оконные функции только в версии 3.25.
4. И
date_trunc()
предположительно, это какая-то определяемая пользователем функция?5. @Shawn впервые использует sqllite. Также strftime (‘%m’, host_since) в качестве месяца работает в sqllite.