мои навыки SQL не достаточно сильны, чтобы понять это, надеюсь, кто-то может помочь.Это на SQLite для Android:
У меня есть таблица «попытки»:
attempt_id | word | score | attempt_time
----------------------------------------
1 | w1 | 1 | 2011-09-01
2 | w1 | 2 | 2011-09-02
3 | w2 | 1 | 2011-09-02
4 | w3 | 1 | 2011-09-03
5 | w4 | 0 | 2011-09-03
6 | w1 | 0 | 2011-09-04
Каждое слово имеет оценку, связанную с ним;Я хочу найти количество слов, которые имеют оценку> = 1 за каждый день.Результаты сохраняются со дня на день, поэтому оценка за день t должна быть отражена в день t + 1 .Когда слово набирает 0, оно не должно учитываться.Результат должен выглядеть примерно так:
attempt_time | count(word)
--------------------------
2011-09-01 | 1 // w1 (1)
2011-09-02 | 2 // w1, w2 (2)
2011-09-03 | 3 // w1, w2, w3 (3)
2011-09-04 | 2 // w2, w3 (2) (w1 now has score 0)
Существует много try_times, поэтому вы не можете просмотреть их по отдельности.Я подозреваю, что мне нужно использовать подзапрос для суммирования каждой даты и предыдущих дат, но все еще нужен способ отбросить дубликаты (например, только считать w1 один раз).
Это должно сделать что-то подобное, но нужно вседаты, а не только одна:
select count(distinct word) from attempts where score > 0
and attempt_time <= '2011-09-03';
> 3
Моя альтернатива - создать отдельную таблицу, в которой просто будут отслеживаться итоги за каждый день, но тогда я должен синхронизировать данные.
Большое спасибо.
Редактировать: Я попытался добавить еще несколько деталей, чтобы сделать вопрос более понятным.Надеюсь, это поможет.