2017-07-17 7 views
0

次の問題を解決するための頭痛があります。特定の制限に達するとMySQLの行が取得されます

SUM(price_total)が特定のレベルにグループ化されたときにデータを取得するクエリを探しています。以下のようにテーブルの構造である:閾値15

CREATE TABLE `Table1` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `Date` datetime DEFAULT NULL, 
    `type` int(11) DEFAULT NULL, 
    `price_total` int(11) DEFAULT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=latin1; 

データ

INSERT INTO `Table1` (`id`, `Date`, `type`, `price_total`) 
VALUES 
    (1,'2013-02-01 00:00:00',1,5), 
    (2,'2013-02-01 00:00:00',2,15), 
    (3,'2013-02-02 00:00:00',1,25), 
    (4,'2013-02-03 00:00:00',3,5), 
    (5,'2013-02-04 00:00:00',4,15), 
    (6,'2013-03-05 00:00:00',1,20), 
    (7,'2013-08-07 00:00:00',4,15); 

例の結果、時系列順に。

Type 1: 2013-02-02 00:00:00 Because here it came above 15. (15+5) 
Type 2: 2013-02-01 00:00:00 
Type 3: n/a SUM(price_total) < 15 
Type 4: 2013-02-04 00:00:00 

合計すると。彼らがしきい値を超えた日を知りたい。価格の合計は、時系列にまとめなければなりません。

+0

すでに何クエリを持っていますか? –

+0

\t表1 GROUP BY型と \tタイプ、 \t SUM(price_total) を選択します。私は愚かなMySQLユーザーではありませんが、正直言ってどこから始めたらいいかわかりません。私たちはType 3を出現させたいので、Havingを実装することはできません。それ以外の場合、タイプ3は除外されます。 –

+0

あなたは値の合計が特定の閾値より大きい最初の瞬間を探しています。 タイプ5,10,12の3つの値があるとします。和の順序は関係がありますか? (5 + 12> 15、ただし10 + 12も大きい15) –

答えて

0

ここでは、単純な、自明のクエリです:

select type, min(date) as date 
from (
    select t1.type, t1.date, sum(t2.price_total) as total 
    from table1 t1 
    join table1 t2 
     on t2.type = t1.type 
     and t2.date <= t1.date 
    group by t1.type, t1.date 
    having total >= 15 
) sub 
group by type 

デモ:http://rextester.com/GMAK8269

関連する問題