【问题标题】:get record count for each year in database获取数据库中每年的记录数
【发布时间】:2015-04-16 16:43:01
【问题描述】:

我有两个mysql数据库表:people和markers 他们加入 MarkerID (people.MarkerID = markers.MarkerID)

标记表具有以下字段:

MarkerID
lat
lng
date

people 表有这些字段

peopleID
MarkerID

一个标记可以有很多人。

我想要的是获取每年的总人数记录,最好是在一个查询中。我该怎么做?

我需要获取每个不同年份(markers.date)的人数,所以我认为需要有一个 group by 和 left join。我是这样做的,但计数有时有点偏离。我在这里数的是标记还是人数?

    Select year(m.date), Count(*)
From markers As m
    Join people As p
        On p.MarkerID = m.MarkerID
Group By year(m.date)

【问题讨论】:

  • 提供一些示例数据和预期结果,这样可以更容易地调试问题。

标签: mysql sql


【解决方案1】:

您正在加入 MarkerID,但想要不同人数,所以我相信您想要:

SELECT YEAR(m.date), COUNT(DISTINCT peopleID)
FROM markers AS m
JOIN people AS p USING(MarkerID)
GROUP BY YEAR(m.date)

【讨论】:

  • 合情合理且整洁using - 不错。
【解决方案2】:

不能 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

【讨论】:

  • 稍微阐述一下?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-29
  • 1970-01-01
  • 2013-01-27
  • 1970-01-01
  • 2015-11-07
  • 1970-01-01
相关资源
最近更新 更多