ここで問題が発生しました。簡単な解決策があることを願っています。これをできるだけ簡単にしようとします:
- チケットは出席者のものです
- 例:
select * from tickets JOIN attendees ON attendee.id = tickets.attendee_id
- 出席者には、「収益」と呼ばれる 10 進数の列があります。
とはいえ、総収益など、チケットに関するさまざまな情報を返すクエリを実行する必要があります。問題は、2 つのチケットが同じ出席者に属している場合、収益が 2 回カウントされることです。出席者の収益を 1 回だけ合計するにはどうすればよいですか?
私のORMがこれを困難にするため、サブクエリを使用したくありません。さらに、複数の列に対してこれを実行したい場合、サブクエリソリューションはスケーリングしません。
ここに私が持っているものがあります:
- 収益が 100 の参加者 1 人
- 両方ともその出席者に属する 2 枚のチケット
Select count(tickets.*) as tickets_count
, sum(attendees.revenue) as atendees_revenue
from tickets LEFT OUTER JOIN attendees ON attendees.id = tickets.attendee_id;
=> これattendees_revenue
は 200 であることを示しています。私はそれを 100 にしたいと考えています。データベースには 100 の existing_revenue を持つ出席者が 1 人いるためです。出席者が二重にカウントされることは望ましくありません。
これが可能かどうか教えてください。