демо: дб <> скрипка
SELECT DISTINCT ON (year, week)
foodate, bar
FROM (
SELECT
foodate,
bar,
EXTRACT('isoyear' FROM foodate) as year,
EXTRACT('week' FROM foodate) as week
FROM dates
ORDER BY foodate
)s
EXTRACT('week'...)
дает неделю. Таким образом, две даты на одной и той же неделе дают одинаковые выходные данные в этом столбце.
DISTINCT ON (week)
дает первую (заказанную!) Строку для каждой недели.
Функции Postgres Date
Обратите внимание на определение недели:
Номер недели нумерации ISO 8601 в году. От
По определению, недели ISO начинаются по понедельникам и первой неделе года
содержит 4 января того года. Другими словами, первый четверг
год на первой неделе этого года.
Редактировать : Если у вас есть данные за более чем год, вы должны также добавить год. В противном случае, например, вы получите первый ряд всех первых недель всех лет.