###前提・実現したいこと
最近になりMySQLの勉強を始めて問題集を解いているのですが週別集計で詰まってしまいました
以下が詰まっている問題です
各プロジェクトの人件費を週別に出力せよ。
(複数PJに入っている人のコストは、それぞれに全額つけて計算する)
なお出力するカラムには下記も含めよ。
(下記以外が含まれていても問題無い)
該当週の先頭日付(日曜日の日付)(※データがあろうが無かろうが、日曜日の日付を表示) → ソート順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テーブルがあります
###試したこと
日給/8で時給を出して計算しています
以下のように月別での集計はできたのですが週別はBETWEENを複数使用すればいいのでしょうか?
それだといくつも書くことになって非効率な気がします
MySQL
1SELECT 2 team.name, 3 SUM(salary.june_salary) AS 6月のコスト 4FROM 5 ( 6 SELECT 7 time_sheets.member_id AS member_id, 8 (MAX(daily_salary.pay) / 8) * SUM(time_sheets.working_hours) AS june_salary 9 FROM 10 time_sheets 11 INNER JOIN 12 daily_salary 13 ON 14 time_sheets.member_id = daily_salary.member_id 15 WHERE 16 time_sheets.work_day 17 BETWEEN 18 '2015-06-01' 19 AND 20 '2015-06-30' 21 GROUP BY 22 time_sheets.member_id 23 ) AS salary 24INNER JOIN 25 team_member 26ON 27 salary.member_id = team_member.member_id 28INNER JOIN 29 team 30ON 31 team_member.team_id = team.team_id 32GROUP BY 33 team.team_id 34; 35 36+---------+------------------+ 37| name | 6月のコスト | 38+---------+------------------+ 39| Alfa | 24987500.0000 | 40| Bravo | 45462500.0000 | 41| Charlie | 35675000.0000 | 42| Delta | 37612500.0000 | 43| Echo | 53050000.0000 | 44| Golf | 77987500.0000 | 45+---------+------------------+
週別の他、該当週の先頭日付(日曜日の日付)を表示させる方法にも詰まっています
そもそも月別の集計でも、もっと効率的なものがあるのでしょうか。
何か追加の情報が必要でしたら教えてください
よろしくお願いします
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/07/03 01:31
2017/07/03 02:11 編集
2017/07/03 04:25
退会済みユーザー
2017/07/03 04:42