###前提・実現したいこと
先日似たような質問をさせていただいたのですが、その応用的なことができるのかなーと思い自分で試してみたのですがなかなか上手くいかないので質問させていただきます。
以下のようなことができないか模索中です
前週とのコスト比率を算出。
自己結合にて解ける?
カラムとしては下記を含めたい
該当週の先頭日付(日曜日の日付) → ソート順1番目
チーム名 → ソート順2番目
該当週のコスト
前週のコスト
該当週と前週との割合を百分率表記(パーセント、小数点以下二桁で四捨五入)
というような感じでできないのかなと考えています
現在あるテーブルは以下の通りです。おそらく使用するであろうテーブルだけ書いておきます
teamテーブル
teamiD | team_nam |
---|---|
1 | aaa |
2 | bbb |
3 | ccc |
4 | ddd |
5 | eee |
各メンバーの日給
daily_salaryテーブル
member_id | pay |
---|---|
1 | 100000 |
2 | 200000 |
3 | 300000 |
: | : |
メンバーがどこのチームに所属しているか
team_memberテーブル
member_id | team_id |
---|---|
1 | 3 |
2 | 2 |
3 | 1 |
: | : |
各メンバーが1日何時間働いたか
time_sheetsテーブル
member_id | work_day | working_hours |
---|---|---|
1 | 2015-06-01 | 8 |
1 | 2015-06-02 | 8 |
1 | 2015-06-03 | 8 |
: | : | : |
2 | 2015-06-01 | 8 |
2 | 2015-06-02 | 8 |
2 | 2015-06-03 | 8 |
: | : | : |
このほかにメンバーidやメンバーの名前のレコードがあるmemberテーブルがあります
###該当のソースコード
前回の質問の時に以下のようなコードを書きました
SELECT DATE_SUB(work_day, INTERVAL (WEEKDAY(work_day) + 1) DAY) AS 該当週の先頭日付, team.name AS team_name, sum(time_sheets.working_hours * daily_salary.pay / 8) AS 当週コスト, FROM time_sheets INNER JOIN daily_salary ON time_sheets.member_id = daily_salary.member_id INNER JOIN team_member ON time_sheets.member_id = team_member.member_id INNER JOIN team ON team_member.team_id = team.team_id WHERE time_sheets.work_day BETWEEN '2015-06-01' AND '2015-06-30' GROUP BY 該当週の先頭日付,team.team_id; +--------------------------+-----------+---------------+ | 該当週の先頭日付 | team_name | コスト | +--------------------------+-----------+---------------+ | 2015-05-31 | Alfa | 5825000.0000 | | 2015-05-31 | Bravo | 10637500.0000 | | 2015-05-31 | Charlie | 8025000.0000 | | 2015-05-31 | Delta | 8550000.0000 | | 2015-05-31 | Echo | 11762500.0000 | | 2015-05-31 | Golf | 17612500.0000 | | 2015-06-07 | Alfa | 5775000.0000 | | 2015-06-07 | Bravo | 10400000.0000 | | 2015-06-07 | Charlie | 8350000.0000 | | 2015-06-07 | Delta | 8600000.0000 | | 2015-06-07 | Echo | 12612500.0000 | | 2015-06-07 | Golf | 18262500.0000 | | 2015-06-14 | Alfa | 5462500.0000 | | 2015-06-14 | Bravo | 10387500.0000 | | 2015-06-14 | Charlie | 7925000.0000 | | 2015-06-14 | Delta | 8437500.0000 | | 2015-06-14 | Echo | 10975000.0000 | | 2015-06-14 | Golf | 17875000.0000 | | 2015-06-21 | Alfa | 5275000.0000 | | 2015-06-21 | Bravo | 10125000.0000 | | 2015-06-21 | Charlie | 8300000.0000 | | 2015-06-21 | Delta | 8800000.0000 | | 2015-06-21 | Echo | 12887500.0000 | | 2015-06-21 | Golf | 16875000.0000 | | 2015-06-28 | Alfa | 2650000.0000 | | 2015-06-28 | Bravo | 3912500.0000 | | 2015-06-28 | Charlie | 3075000.0000 | | 2015-06-28 | Delta | 3225000.0000 | | 2015-06-28 | Echo | 4812500.0000 | | 2015-06-28 | Golf | 7362500.0000 | +--------------------------+-----------+---------------+
回答3件
あなたの回答
tips
プレビュー