У меня есть таблица со статистическими данными.
Я пытаюсь подсчитать записи, сгруппированные по версии, проблема в том, что записи имеют другой критерий (ссылка) и должны учитываться только один раз (для ссылки).
Пример данных статистики для иллюстрации проблемы:
id stat_date ref version
-------------------------
1 2012-01-25 1 A
2 2012-01-25 2 B
3 2012-01-25 3 A
4 2012-01-26 8 B
5 2012-01-26 2 B
6 2012-01-26 3 B <-- version has been updated for ref=3
Простой подсчет вернул бы
SELECT COUNT(*),version FROM stat GROUP BY version
1,A
5,B
Проблема здесь в том, что только последняя запись с ref = 3(id = 6) должен учитываться, а (id = 3) должен игнорироваться.Итак, вопрос в том, как я могу отфильтровать строку (id = 3) из запроса?
Я не могу понять, что я должен вставить в качестве условия в подзапросе
SELECT COUNT(*),version FROM stats
WHERE stat_date BETWEEN "2012-01-25" AND "2012-01-26"
AND id = (SELECT MAX(id) FROM stats WHERE <condition>)
GROUP BY 2
ожидаемый результат будет:
1,A (since id=3 is ignored)
3,B (since the first id=2 is ignored and only id=5 is taken into account)