Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 按所选年龄统计来自不同地区的用户_Mysql - Fatal编程技术网

Mysql 按所选年龄统计来自不同地区的用户

Mysql 按所选年龄统计来自不同地区的用户,mysql,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'

我正在尝试编写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
选择sum(当districts.`districtId`=1,然后选择1,否则选择0结束)作为'North',
求和(当districts.`districtId`=4,然后1或0结束时的情况)作为“中心”,
求和(当district.`districtId`=6,然后1或0结束时的情况)为“南”,日期格式(现在(),'%Y')-日期格式(userDetails.birthDate2,'%Y')-(日期格式(现在(),'00-%m-%d')<日期格式(userDetails.birthDate2,'00-%m-%d'))为年龄
来自。。。。年龄在0到14岁之间 但我得到了一个错误:未知年龄列。 还有其他方法写这个查询吗

试试看

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
SELECT districts.districtId,count(userDetails.*)
来自用户详细信息,地区
userDetails.districtId=districts.districtId上的内部联接地区
其中userDetails.birthDate2>=(日期(现在(),间隔14年)

和userDetails.birthDate2由于您没有给出完整的查询,请尝试以下操作,并填写您的值:

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

当然,在上面阿隆索洛的回答中,添加Group by子句。如果我用我的select替换你的select,它会起作用。谢谢你的回答。