У меня есть таблица с единственным релевантным столбцом, представляющим завершение, через несколько секунд после эпохи, когда элемент был отмечен как завершенный. Я хотел бы сделать оператор select для подсчета количества выполненных элементов, сгруппированных по неделям, в которые они были отмечены как завершенные. Пока что у меня есть что-то вроде этого:
SELECT (completionDate-min)/(60*60*24*7)
FROM
(SELECT min(completionDate) AS min
FROM TASK)
LEFT JOIN task;
Что возвращает эти результаты:
0
2
2
2
3
3
3
Это означает, что 1 элемент был завершен в первую неделю, а 3 - в третью и 4-ю недели.
Я могу найти лучшее значение для min
программно (в частности, начало недели). Что мне действительно нужно, так это способ группировки по результату и подсчета количества результатов. Идеальный результат будет:
0|1
2|3
3|3
Мой следующий шаг - попробовать это:
SELECT COUNT(idx)
FROM
(SELECT ((completionDate-min)/(60*60*24*7)) AS idx
FROM
(SELECT min(completionDate) AS min
FROM TASK)
LEFT JOIN task)
GROUP BY idx;
Что дает результаты, которые выглядят как-то правильно, но не так, как я не понимаю:
0
1
3
3
В этот момент я просто застрял. Я признаю, что мой SQL не так уж хорош, поэтому любая оптимизация того, что у меня есть, также будет оценена.