0

単純な結合を行うには十分な MySQL の知識がありますが、高度なことに関しては知識が不足しています。PHP で行を削除できることはわかっていますが、クエリを正しく行う方がクリーンだと思います。

私が現在行っていることは次のとおりです。

クエリ:

SELECT DAYOFWEEK(r.`date`) AS weekNumber,  r.`date`AS scoreDate, qf.target, r.totalScore FROM results;

結果:

weekNumber, scoreDate, target, totalScore
4, '2012-02-29', 85, 100
3, '2012-03-06', 85, 100
3, '2012-03-06', 85, 75
3, '2012-03-06', 85, 42

次のことは可能ですか。

  • 週番号でグループ化、
  • スコアの日付を変更して、「開始日と終了日」を表示します。
  • ターゲットを合計し、一緒にグループ化された行数で割ります
  • そして、ターゲットの場合と同じように、totalScore に対しても同じことを行いますか?

クエリの結果は次のとおりです。

weekNumber, scoreDate, target, totalScore
4, '2012-02-29 to 2012-02-29', 85, 100
3, '2012-03-06 to 2012-03-06', 85, 72.3

誰かがクエリの作成を手伝ったり、探している結果を生成する方法を教えてくれませんか?

ありがとう!

4

1 に答える 1

1
SELECT q1, AVG(q2) as target, max(q3) as `end`, MIN(q3) as `start` from q GROUP BY q1

上記のクエリは、あなたが望むことをするはずです。あなたのフィールドでq1 - q3を変更するだけです。およびqをテーブル名と一緒に。

結果:

________________________________________
| q1 | target | end        | start     |
----------------------------------------
| 3  | 8.0000 | 2012-03-09 | 2012-03-08|
----------------------------------------
| 4  | 2.0000 | 2012-03-07 | 2012-03-07|

データベース:

________________________
| q1 | q2 | q 3        | 
------------------------
| 3  | 7  | 2012-03-09 |
| 3  | 9  | 2012-03-08 |
| 4  | 2  | 2012-03-07 |

ソース: http://www.w3schools.com/sql/sql_func_avg.asp

于 2012-03-09T12:53:17.130 に答える