1

テーブルリーグ

team_id name        wins    losses  played  recorded    created
1       dodgers     10      4       14      1364790000  1353215830
2       angels      9       6       15      1364790000  1353661376
3       pirates     12      3       15      1364790000  1353543466

team_id name        wins    losses  played  recorded    created
1       dodgers     22      9       31      1367274480  1353215830
2       angels      14      17      31      1367274480  1353661376
3       pirates     19      13      32      1367274480  1353543466
4       yankees     10      9       19      1367274480  1365577298
5       brewers     7       11      18      1367274480  1365394448

次のような結果を希望:

team_id name        wins    losses  played
1       dodgers     12      5       17      
2       angels      5       11      16
3       pirates     7       10      17
4       yankees     10      9       19
5       brewers     7       11      18

結合を使用していくつかのクエリを試しましたが、成功しませんでした。毎日、チーム、勝利、敗北、およびプレーがキャプチャされ、記録された列にタイムスタンプが付けられます。作成された列にチームが作成されました。(すべての UNIX タイムスタンプ) 探している 2 つの日付の間にいくつかの行がありますが、このクエリには必要ありません。

私がやりたかったのは、既存のチームと新しいチームの 4 月の勝ち/負け/プレイを取得することでした。いくつかのクエリを試してみました。

SELECT a.name as name, a.wins-b.wins as wins, a.losses-b.losses as losses, a.played-b.played as played from league a join league b on a.id=b.id where a.recorded= 1367274480 and b.recorded= 1364790000

SELECT new.*, new.wins-old.wins as newwins, new.losses-old.losses as newlosses FROM league new LEFT JOIN league old ON new.id=old.id WHERE (new.recorded=1367274480 and old.recorded=1364790000) or (new.created > 1364790000 and new.recorded=1367274480) GROUP BY new.id
4

2 に答える 2

0

データの設定方法では、毎日の値が記録されていないようです。ただし、各列は増加するため、その月の最大値と最小値の差を取ることができます。

これを試して:

SELECT l.name as name,
       max(l.wins)-min(l.wins) as wins,
       max(l.losses)-min(l.losses) as losses,
       max(l.played)-min(l.played) as played
from league l
where l.recorded <= 1367274480 and l.recorded >= 1364790000
group by l.name
于 2013-05-01T01:47:38.867 に答える