2017-02-10 10 views
1

この中MySQLはテーブルの各N要素の合計を取得

...私はこの

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 

のようなテーブルがあると私は明確な日付の各2要素の価格の合計を取得したいです場合、私の結果は

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

答えて

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; 

(実は、私はそれが奇妙な、これが機能することを見つけるが、それはように見える)

+0

私はあなたのクエリのアライメントが好き。どのエディターを使用していますか? – GurV

+0

@GurV私はTextPad(Windowsの場合) – Strawberry

2

一つの方法は、相関サブクエリを使用していなければなりません。

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; 
関連する問題