在SQL中可以這樣做嗎?SELECT裏面的什麼
SELECT SUM(jobRequirements.number) as total,
SUM(jobRequirements.number WHERE jobRequirements.type=1) as jobIT,
SUM(jobRequirements.number WHERE jobRequirements.type=2) as jobTourism FROM jobRequirements
我也內加入這裏與where子句,但我必須做單獨的查詢,其中對於每個jobRequirements.type
,也可以在一個查詢完成條款?
我的完整的查詢是從Laravel,它看起來像這樣:
$jobStats = DB::table('jobRequirements')
->join('jobs', 'jobRequirements.job', '=', 'jobs.id')
->join('types', 'jobRequirements.type', '=', 'types.id')
->join('users', 'jobs.user', '=', 'users.id')
->select(DB::raw('SUM(jobRequirements.number) as total, users.name'))
->where('jobRequirements.active', 1)
->orderBy('users.name', 'asc')
->groupBy('users.id')
->get();
有了這個,我得到總人數,但我需要按類型來獲得數之和。
更新
有了這個,有點修改,代碼@Terminus
SELECT SUM(jobReq.number) as total, users.name as user, types.name as type
FROM jobRequirements jobReq
INNER JOIN jobs j ON j.id = jobReq.job
INNER JOIN types t ON t.id = jobReq.type
INNER JOIN users u ON u.id = j.user
WHERE jobReq.active = 1
GROUP BY u.id, t.id
ORDER BY u.name ASC
我得到這個:
total | user | type
------------------------
2 | user1 | type2
5 | user2 | type6
1 | user1 | type3
3 | user2 | type2
我需要在最後的是:
| type2 | type3 | type6 | total
---------------------------------------
user1 | 2 | 1 | 0 | 3
user2 | 3 | 0 | 5 | 8
total | 5 | 1 | 5 | 11
您正在尋找'案例... When' – Kason
不知道如何laravel的作品,但你可以在'users.id'上添加另一個'group by'嗎?這將工作在直接sql – Terminus
否2在同一個查詢中的子句是不可能的,但是你可以嵌套查詢(子查詢) – ArtisticPhoenix