這是一個非常基本的問題,無論出於何種原因我找不到合理的解決方案。我會盡力解釋。在Postgresql中使用distinct和aggregate函數?
假設您有活動門票(部分,行,座位#)。每張票都屬於與會者。多張門票可以屬於同一個參加者。每位參加者都有價值(例如:參加者#1價值10,000美元)。這就是說,這裏就是我想要做的:
1. Group the tickets by their section
2. Get number of tickets (count)
3. Get total worth of the attendees in that section
這裏就是我遇到的問題:如果與會者#1是價值$ 10,000,用4張,合計(attendees.worth)將返回$ 40,000。這是不準確的。價值應該是10,000美元。然而,當我在與會者中取得不同的結果時,計數並不準確。在一個理想的世界裏,很高興做類似
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
顯然這個查詢不起作用。我怎樣才能在單個查詢中完成同樣的事情?或者它甚至有可能?我寧願遠離子查詢,因爲這是一個更大的解決方案的一部分,我需要在多個表中執行此操作。
此外,價值應該遵循均勻劃分的票。例如:10,000美元/ 4.每張門票的參與者價值5000美元。所以如果門票分屬不同的部分,他們會按比例分配他們的價值。
感謝您的幫助。
我知道這是一段時間,但我有完全相同的問題的類型,我想知道你是否能夠解決它。 – denaje