获取数据库中每年的记录数

时间:2015-04-16 16:43:02

标签: mysql sql

我有两个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)

2 个答案:

答案 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