Este es un problema bastante básico y por cualquier razón no puedo encontrar una solución razonable. Haré todo lo posible para explicar.Utilizando funciones distintas y luego agregadas en Postgresql?
Digamos que tiene un boleto de evento (sección, fila, número de asiento). Cada boleto pertenece a un asistente. Múltiples entradas pueden pertenecer al mismo asistente. Cada asistente tiene un valor (por ejemplo: el asistente # 1 vale $ 10,000). Dicho esto, esto es lo que quiero hacer:
1. Group the tickets by their section
2. Get number of tickets (count)
3. Get total worth of the attendees in that section
Aquí es donde yo estoy teniendo problemas: Si el participante Nº 1 es un valor de $ 10.000 y está utilizando 4 entradas, suma (attendees.worth) está regresando $ 40.000. Lo cual no es exacto. El valor debería ser de $ 10,000. Sin embargo, cuando hago que el resultado sea distinto para el asistente, el recuento no es preciso. En un mundo ideal que sería bueno hacer algo como
select
tickets.section,
count(tickets.*) as count,
sum(DISTINCT ON (attendees.id) attendees.worth) as total_worth
from
tickets
INNER JOIN
attendees ON attendees.id = tickets.attendee_id
GROUP BY tickets.section
Obviamente esta consulta no funciona. ¿Cómo puedo lograr esto mismo en una sola consulta? O incluso es posible? Preferiría mantenerme alejado de subconsultas también porque esto es parte de una solución mucho más grande en la que tendría que hacer esto en múltiples tablas.
Además, el valor debe seguir el boleto dividido de manera uniforme. Ej: $ 10,000/4. Cada boleto tiene un valor de asistente de $ 5,000. Entonces, si los boletos están en diferentes secciones, ellos toman su valor prorrateado con ellos.
Gracias por su ayuda.
Sé que ha pasado un tiempo, pero estoy teniendo exactamente el mismo tipo de problema y me pregunto si fue capaz de resolverlo. – denaje