表:
- Activities: id, userId, description, buildingId
- Buildings: id, name
- User: id, name, gender
用户可以创建活动,例如:“检查邮件”将是一项活动,buildingid链接到正在进行证书活动的建筑物。
我需要的是一个查询,根据此类建筑物的活动量,每个建筑物的男性/女性%。
例如:
User: 1, mike
Building: 1, main hall
Activities:
id: 1
userId: 1 (mike)
description: "checking mail"
buildingId: 1 (main hall)
id: 2
userId: 1 (mike)
description: "getting coffee"
buildingId: 1 (main hall)
所以我想得到1号楼(大厅)的女性/男性%,我该怎样才能做到最好?
答案 0 :(得分:2)
SELECT buildingId,
(SUM(CASE WHEN `User`.gender='male' THEN 1 ELSE 0 END)/
COUNT(*))*100 as male_percent
FROM Activities JOIN `User` ON Activities.userID=`User`.id
GROUP BY `Activities`.buildingId
或者如果您更喜欢比率:
SELECT buildingId,
SUM(CASE WHEN `User`.gender='male' THEN 1 ELSE 0 END)/
SUM(CASE WHEN `User`.gender='female' THEN 1 ELSE 0 END) as ratio
FROM Activities JOIN `User` ON Activities.userID=`User`.id
GROUP BY `Activities`.buildingId