Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

819
Views
Error de Postgresql: la columna debe aparecer en la cláusula GROUP BY o usarse en una función agregada

Tabla de mensajes desde donde quiero obtener contactos recientes para 'usuario1', ahora la tabla se ve así:

 | id | receiver | sender | time | |----|----------|--------|------------| | 1 | user1 | host1 | 2020-07-02 | | 2 | host2 | user1 | 2020-07-03 | | 3 | user3 | host3 | 2020-07-04 |

Logré obtener el resultado esperado usando mysql:

 SELECT CASE WHEN receiver = 'user1' THEN sender ELSE receiver END AS id, max(time) AS time FROM message WHERE receiver = 'user1' OR sender = 'user1' GROUP BY CASE WHEN receiver = 'user1' THEN sender ELSE receiver END;

Pero cuando ejecuto esta consulta en postgres, aparece el error: Error de Postgresql: el receptor de columna debe aparecer en la cláusula GROUP BY o usarse en una función agregada. ¿Alguna solución para solucionar este problema?

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Yo sugeriría distinct on :

 select distinct on ( case when receiver = 'user1' then sender else receiver end ) m.* from messages m where 'user1' in (receiver, sender) order by (case when receiver = 'user1' then sender else receiver end), time desc;
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!