2017-02-10 5 views
1

habe ich eine Tabelle wie dieseMySQL erhalten Summe für jedes N-Element einer Tabelle

ID - price - date 
1 - 10 - 2017-01-01 
2 - 50 - 2017-01-02 
3 - 20 - 2017-01-01 
4 - 10 - 2017-01-01 
5 - 5  - 2017-01-01 
6 - 10 - 2017-01-02 
7 - 20 - 2017-01-02 
8 - 20 - 2017-01-02 

und ich möchte Preissumme für jedes 2 Element eines gesonderten Termin bekommen ...

In dieser Fall muss mein Ergebnis

sein
2017-01-01 -> 30 
2017-01-02 -> 60 

Antwort

2
SELECT x.date 
    , SUM(y.price) 
    FROM my_table x 
    JOIN my_table y 
    ON y.date = x.date 
    AND y.id <= x.id 
GROUP 
    BY x.id -- a functional dependency 
HAVING COUNT(*) = 2; 

(Eigentlich finde ich es seltsam, dass dies funktioniert, aber es scheint)

+0

Ich mag Ihre Anfrage Ausrichtung. Welchen Editor benutzen Sie? – GurV

+0

@GurV Ich benutze nur TextPad (für Windows) – Strawberry

2

Eine Möglichkeit ist, korrelierte Unterabfrage mit:

select 
    date, 
    ( select sum(price) 
     from (
      select price 
      from your_table t2 
      where t1.date = t2.date 
      order by id 
      limit 2 
     ) 
    ) total 
from your_table t1 
group by date; 
Verwandte Themen