2016-12-25 7 views
1

私は一定の期間にわたり合計得点の変化がなかった名前とその期間を特定しようとしています。時間の経過とともに変更されていないエントリを特定するにはどうすればよいですか?

例表:

+----------+--------+-------+ 
| Date | Name | Score | 
+----------+--------+-------+ 
| 1/1/2016 | Frank | 55 | 
| 1/1/2016 | John | 80 | 
| 1/2/2016 | Frank | 60 | 
| 1/2/2016 | John | 85 | 
| 1/3/2016 | Frank | 60 | 
| 1/3/2016 | John | 100 | 
| 1/4/2016 | Frank | 60 | 
| 1/4/2016 | John | 120 | 
| 1/5/2016 | Frank | 60 | 
| 1/5/2016 | John | 120 | 
+----------+--------+-------+ 

予想される出力:

+-------+------+ 
| Name | Days | 
+-------+------+ 
| Frank | 4 | 
| John | 2 | 
+-------+------+ 

ノー成功でこれを行う方法をパズルしようとしています。私はそれのどれも成功に至っておらず、質問を混乱させるだけなので、表示するコードはありません。

これを行うにはどうすればよいですか?

答えて

2

あなたがスコアを持つグループにデータを必要とし、ユーザーがそのスコアを持っていることを最初と最後の日を計算、これをチェック:

SELECT DATEDIFF(last_day, first_day) + 1 AS days, name, score, 
    first_day, last_day 
FROM (
    SELECT 
     max(date_score) as last_day, 
     min(date_score) as first_day, 
     score, 
     name 
    FROM members 
    GROUP by score 
) AS score 

年代間の差異を返し、スコアを最後の日に表すために1つを追加します。素晴らしい作品作業例link

+0

はこちら

チェック!私はそのようなクエリのテーブルを作ることができるかどうかはわかりませんでした。とても助かりました。 –

関連する問題