2016-06-05 2 views
0

Sorry für verwirrende Titel, wusste nicht, wie dies zu wording.Abrufen des Quotienten von zwei SUM (col) JOIN auf verschiedenen Werten

Ich habe eine Tabelle der Ereignisse und eine Tabelle der Wetten auf diese Ereignisse. Ich erhalte bereits den Gesamteinsatz für jedes Event, aber ich möchte auch die Quoten holen (aka, der Quotient aus der Summe für ein Team geteilt durch die Summe des anderen Teams). Der Teilnehmer, auf den gewettet wird, ist in der horse Spalte der data_bets Tabelle gespeichert.

Zum Beispiel möchte ich etwas hinzufügen wie:

SELECT 
    SUM(data_bets.amount) WHERE data_bets.horse = data_events.challenger 
    /
    SUM(data_bets.amount) WHERE data_bets.horse = data_events.contestant 
AS bet_odds 

meine vorhandene Abfrage unter:

SELECT *, 
    SUM(data_bets.amount) AS total_pot, 
    COUNT(data_bets.member) AS total_bets, 
    COUNT(data_votes.member) AS total_votes, 
    data_platforms.name AS platform_name, data_platforms.icon AS platform_icon 
FROM data_events 
    LEFT JOIN data_bets ON data_bets.event=data_events.id 
    LEFT JOIN data_votes ON data_votes.content_type=2 AND data_votes.content_id=data_events.id 
    LEFT JOIN data_platforms ON data_platforms.id=data_events.platform 
WHERE status=1 
GROUP BY data_events.id 
ORDER BY total_pot DESC 

Ist dies möglich, mit einer Abfrage zu tun? Wenn möglich, würde ich es vorziehen, beide challenger_odds und contestant_odds, wie dies zu holen:

SELECT 
    SUM(data_bets.amount) WHERE data_bets.horse = data_events.challenger 
    /
    SUM(data_bets.amount) WHERE data_bets.horse = data_events.contestant 
AS challenger_odds, 
    SUM(data_bets.amount) WHERE data_bets.horse = data_events.contestant 
    /
    SUM(data_bets.amount) WHERE data_bets.horse = data_events.challenger 
AS contestant_odds 

Antwort

1

Verwendung bedingte Aggregation:

SELECT (SUM(CASE WHEN data_bets.horse = data_events.challenger THEN data_bets.amount ELSE 0 END)/
     SUM(CASE WHEN data_bets.horse = data_events.contestant THEN data_bets.amount END) 
     ) as bet_odds 
+0

ich jetzt unsere bedingte Aggregat-Anweisung zu holen oben/unten Stimmen die Tabelle data_votes, aber ich habe Probleme. Darf ich diese Frage mit der neuen Abfrage aktualisieren? – SISYN

+0

@DanL. . . Sie sollten eine andere Frage stellen. –

Verwandte Themen