按选定年龄计算来自不同地区的用户

时间:2015-01-25 10:13:30

标签: mysql

我正在尝试编写mysql查询,该查询将通过某个选择的年龄获取有关不同地区的用户数量的数据。 例如:如果我选择年龄0-14岁,我想知道“北方”,“南方”等有多少用户在0到14岁之间。

我正在撰写当前的查询:

SELECT sum(case when districts.`districtId` = 1 then 1 else 0 end) as 'North',
    sum(case when districts.`districtId` = 4 then 1 else 0 end) as 'Center',
    sum(case when  districts.`districtId` = 6 then 1 else 0 end) as 'South', , (DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(userDetails.birthDate2, '%Y') - (DATE_FORMAT(NOW(), '00-%m-%d') < DATE_FORMAT(userDetails.birthDate2, '00-%m-%d'))) as age

来自....年龄在0到14岁之间 但我得到错误:未知年龄栏。 还有其他方法可以写这个查询吗?!

2 个答案:

答案 0 :(得分:0)

尝试

SELECT districts.districtId, count(userDetails.*)
FROM userDetails, districts
INNER JOIN districts ON userDetails.districtId = districts.districtId
WHERE userDetails.birthDate2 >= (DATE_SUB(NOW(), INTERVAL 14 YEAR)
AND userDetails.birthDate2 <= (DATE_SUB(NOW(), INTERVAL 0 YEAR)
GROUP BY districts.districtId

对于您的其他问题,请尝试发布数据库架构..

编辑: 我忘记了GROUP BY Clausse

答案 1 :(得分:0)

由于您未提供完整查询,请尝试此操作,并填写您的值:

 Select districts.districtId, count(*) as DistrictwiseCount From ... Where age_criterion_goes_here
    Group By districts.districtId