| From: | Viliam Ďurina <viliam(dot)durina(at)gmail(dot)com> |
|---|---|
| To: | pgsql-hackers(at)lists(dot)postgresql(dot)org |
| Subject: | MIN/MAX functions for a record |
| Date: | 2024-03-22 11:26:27 |
| Message-ID: | CAO=iB8L4WYSNxCJ8GURRjQsrXEQ2-zn3FiCsh2LMqvWq2WcONg@mail.gmail.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-hackers |
In my queries I often need to do MIN/MAX for tuples, for example:
SELECT MAX(row(year, month))
FROM (VALUES(2025, 1), (2024,2)) x(year, month);
This query throws:
ERROR: function max(record) does not exist
In this case you can replace it with `MAX((year||'-'||month||'-1')::date)`.
However in my case I have an event table with `event_time` and `text`
columns, I'm grouping that table by some key and want to have the text for
the newest event. I would do `MAX(ROW(event_time, text)).text`. Workarounds
for this are clumsy, e.g. with a subquery with LIMIT 1.
The lack of this feature is kind of unexpected, because the `>` operator or
`GREATEST` function are defined for records:
SELECT
GREATEST((2025, 1), (2024, 2)),
(2025, 1) > (2024, 2)
Was this ever discussed or is there something preventing the implementation?
Viliam
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Sergey Prokhorenko | 2024-03-22 11:43:58 | Re: UUID v7 |
| Previous Message | Ashutosh Bapat | 2024-03-22 10:48:38 | Re: Memory consumed by child SpecialJoinInfo in partitionwise join planning |