Комментарии 3
Работа с массивами часто вызывает раздражение, но с
generate_subscripts
это весьма удобно. Например, есть массив котиков:
Да? А вот Постгресс удивился, что он так может, и сказал, что
ERROR: column "idx" does not exist
LINE 3: ('{Барсик, Мурзик, Рыжик}'::text[])[idx] AS cat_name;
^
Должно быть, например, так:
SELECT index, data[index] name
FROM (VALUES ('{Барсик, Мурзик, Рыжик}'::text[])) AS src (data),
LATERAL generate_subscripts(src.data, 1) AS series (index)
Не понял зачем в последнем примере таблица с датами, она же только все усложняет.
Последний пример - вообще бред. Хотя застрелись, но из показанных исходных данных показанный результат невозможно получить в принципе, ну то есть никаким способом.
А зачем нужна генерация дат, сказано в задании:
Нужно проанилизировать, как часто клиенты делают покупки в определённые дни недели за последние 3 месяца, включая дни, когда покупок не было.
При всей очевидной глупости задания, делать надо то, что просят. Оттого и генерация опорной таблицы.
Другой вопрос, что глупость задания накладывается на проблемы реализации - генерировать надо было, конечно, список дней недели. А до этого они на курсах ещё не дошли.
Коротко про generate_series в PostgreSQL