以下のサンプル表に関して、次の定義に留意してください。
- start、end、timestamp はすべて UNIX タイムスタンプです
- 定義: 期間 = ((終了 - 開始)/3600)、つまり時間単位
次の mysql クエリを取得したいと思います。
- 学生ごとにグループ化し、各学生が費やしたすべての金額を計算します。つまり、(期間 x 費用)
これは私が手に入れたもので、動作しますが、不完全です!
SELECT 学生、SUM(ceil(cost*(end-start)/3600)) AS 費用 FROM は GROUP BY 学生をスケジュールします。
AND (これは機能しませんが、アイデアは実際に私が達成したいものです)
SELECT 学生, SUM(SELECT ceil(cost*(end-start)/3600) FROM schedules WHEREpaid = 1) AS 費用, SUM(SELECT ceil(cost*(end-start)/3600) FROM schedules WHEREpaid = 0) AS 負債 FROM スケジュール GROUP BY 学生;
私の最大の問題は、今日の日付が開始日よりも大きく、支払済みがまだ 0 に設定されている場合に、今日から過去までの費用と負債を計算することです。
皆さんのアイデアに感謝します!
サンプルテーブル
id meta_id 開始 終了 管理者 生徒 家庭教師 コース 費用 支払った 支払日 タイムスタンプ 18 4 1359867600 1359867690 jnc バンジューン キャメロン 2 90 1 1361521193 1359881165 19 4 1360472400 1360472490 jnc バンジューン キャメロン 2 90 1 1361521195 1359881165 20 4 1359867600 1359867690 jnc saadcore キャメロン 2 90 1 1361547064 1359881165 25 6 1359914400 1359919800 jnc ジョンドー・キャメロン 3 35 1 1361547080 1359893058 26 6 1360000800 1360006200 jnc ジョンドー・キャメロン 3 35 0 0 1359893058 27 6 1360087200 1360092600 jnc ジョンドー・キャメロン 3 35 0 0 1359893058