У меня есть столбец JSON в БД Postgres, в котором есть ключи даты недели и значения посещений на эту дату. Я хочу получить максимальное количество дней и добавить его в виде столбца рядом со значениями для всех дней недели.
У меня есть запрос ниже, который, как я думал, мог бы сделать это. Но в настоящее время я получаю сообщение об ошибке «столбец« понедельник »не существует»
Почему понедельник не существует после извлечения его из JSON? Внутренний запрос работает нормально и возвращает все дни и соответствующие значения, как я ожидал (со столбцами понедельник, вторник, среда, четверг, пятница). Я думал, что было бы относительно легко затем запросить эти столбцы и получить наибольшее.
SELECT Monday, Tuesday, Wednesday, Thursday, Friday,
GREATEST(Monday, Tuesday, Wednesday, Thursday, Friday) as MaxDay
FROM "VisitData"
WHERE
(SELECT
popularity_by_day ->> 'Monday' AS Monday,
popularity_by_day ->> 'Tuesday' AS Tuesday,
popularity_by_day ->> 'Wednesday' AS Wednesday,
popularity_by_day ->> 'Thursday' AS Thursday,
popularity_by_day ->> 'Friday' AS Friday
FROM "VisitData")
ОБНОВЛЕНИЕ:
Теперь у меня есть этот запрос после псевдонима псевдонима:
SELECT Monday, Tuesday, Wednesday, Thursday, Friday,
GREATEST(Monday, Tuesday, Wednesday, Thursday, Friday) as MaxDay
FROM
(SELECT
popularity_by_day ->> 'Monday' AS Monday,
popularity_by_day ->> 'Tuesday' AS Tuesday,
popularity_by_day ->> 'Wednesday' AS Wednesday,
popularity_by_day ->> 'Thursday' AS Thursday,
popularity_by_day ->> 'Friday' AS Friday
FROM "VisitData") AS visits
```
This gives me the structure of the output im expecting but the results are inconsistent.
For example row 1 in the result
Monday = 5
Tuesday = 89
Wednesday = 95
Thursday = 120
Friday = 102
MaxDay = 95 (why not 120)
And for row 2
Monday = 329
Tuesday = 350
Wednesday = 439
Thursday = 397
Friday = 314
MaxDay = 439 (This is correct)