I以下のSQLデータベースがあります。テーブル名を私は現在の年の表示=「1」との使用のために合計ポイントを引っ張るために、このデータベースを使用現在のところSQL年度の合計とも設定期間
date fname surname points display
2015-08-08 John Lennon 5 1
2015-08-16 Ringo Starr 2 1
2015-08-24 Paul McCartney 3 1
2015-10-07 George Harrison 1 1
2015-10-15 John Lennon 3 1
2015-10-23 Ringo Starr 5 1
2015-12-07 George Harrison 1 1
2015-12-14 Ringo Starr 5 1
2015-12-22 George Harrison 3 1
2016-02-03 Paul McCartney 4 1
2016-02-13 John Lennon 5 1
2016-02-20 Paul McCartney 1 1
2016-04-04 Ringo Starr 2 1
2016-04-09 George Harrison 2 1
2016-04-20 John Lennon 5 1
次のコード:
SELECT id, fname, surname, points, CONCAT(surname,forename) 'fullname', SUM(points) AS total_points
FROM tablename
WHERE date >= '2016-01-01' AND display ='1'
GROUP BY fname, surname
ORDER BY total_points DESC, surname ASC, forename ASC
しかし、私は過去15日間のポイントを与える結果に余分なデータを追加したいと思います。
SELECT id, fname, surname, points, CONCAT(surname,forename) 'fullname', SUM(points) AS fifteenday_points
FROM tablename
WHERE date >= '2016-04-08' AND display ='1'
GROUP BY fname, surname
ORDER BY total_points DESC, surname ASC, forename ASC
これをどうすればいいですか?何らかの結合を使用する必要がありますか?もしそうなら、異なるWHEREステートメントのためにどこから始めるのですか?または、私がfifteenday_pointsデータを返すことを可能にする最初のクエリに加えることができる簡単な追加がありますか?
素晴らしい!しかし、あなたは単にフルネームでソートするのはなぜですか? 'ORDER BY total_points DESC、fullname ASC' – Reto
これを試しましたが、次のようになります:#1054 - 'on clause'の 'tablename.fullname'が不明です – teddytash
' CONCAT(姓、名) ASフルネーム ' – Vitto