我有两个mysql数据库表:人和标记 他们加入MarkerID(people.MarkerID = markers.MarkerID)
标记表包含以下字段:
MarkerID
lat
lng
date
人员表有这些字段
peopleID
MarkerID
一个标记可以有很多人。
我想要的是获取每年的总人数记录,最好是在一个查询中。我该怎么做?
我需要获得每个不同年份的人数(markers.date),因此我需要有一个分组和左分组。我是这样做的,但计数有时候有些偏差。我在这里计算标记或人物吗?
Select year(m.date), Count(*)
From markers As m
Join people As p
On p.MarkerID = m.MarkerID
Group By year(m.date)
答案 0 :(得分:3)
你正在加入MarkerID
,但我想要不同的人数,所以我相信你想要的:
SELECT YEAR(m.date), COUNT(DISTINCT peopleID)
FROM markers AS m
JOIN people AS p USING(MarkerID)
GROUP BY YEAR(m.date)
答案 1 :(得分:0)
不是100%确定您遇到了什么问题,但您可能会开始使用子选择。
有一个查询可以获取您感兴趣的所有记录,然后从这些结果中获取您的信息。
SELECT COUNT(*), year
FROM
(SELECT year(m.date) year
FROM markers as m
JOIN people as p
ON p.MarkerID = m.MarkerID)
GROUP BY year