如何计算一个项目在mysql中给定日期出现的次数

Posted

技术标签:

【中文标题】如何计算一个项目在mysql中给定日期出现的次数【英文标题】:How can I count the number of times an item occurs in a given date in mysql 【发布时间】:2016-12-12 18:55:13 【问题描述】:

所以我有一个名为 violators 的表,我有 2 列:Violation 和 Date。 违规者:

---------------------------
Violation     | Date
---------------------------
overspeeding  | 2016-05-05
overloading   | 2016-05-07
overspeeding  | 2016-05-05
drunk driving | 2016-05-03

我想知道2016-05-05超速发生了多少次, 所以答案应该是: 2016-05-05 - 超速 - 2

如果我想知道,2016-05-07 发生了多少次超载, 答案应该是: 2016-05-07 - 超载 - 1

【问题讨论】:

提示:WHERE, COUNT(*). 对不起,我刚接触mysql,我刚开始学习它。我的问题只是我计划的一部分。我的程序的另一部分是计算一个项目出现的次数。例如,超速发生了两次,我已经这样做了。另一个是显示在特定日期发生的违规行为。我也已经这样做了。但我在显示某个项目在特定日期出现的次数时遇到了问题。 【参考方案1】:

您的表中将针对每个 overspeeding 记录创建一个条目。

所以执行一个 sql 查询(例如使用 php

$resultset = select * from tablename where Violation ='overspeeding' And Date ='2016-05-05'

这会给你两条记录,所以只需在结果集上应用一个计数函数。在 mysql 中使用 php,它看起来像这样

$temp_variable_no_of_overspeeding =mysql_num_rows($resultset); 
// or you can use count function if don't need those values

所以临时变量中有 2 个

我猜你正在使用 java 所以这样做

ResultSet rs = ps.executeQuery();
int rowcount = 0;
if (rs.last()) 
  rowcount = rs.getRow();
  rs.beforeFirst(); // required to read data in while later . not rs.first() 
                    //because the rs.next() below will move on 2nd element ,
                    //you will miss the first element

while (rs.next()) 
  // do your standard per row stuff

【讨论】:

谢谢!我应该使用 java 将它作为图形输出到 GUI 中。我已经可以绘制程序的其他部分了。但是这里还是有问题。我应该用我的 x 轴上的日期和 y 轴上的出现次数来绘制它。你知道怎么做吗?我正在使用 javafx 如果你想绘制它然后去第一个查询而不是 count ,用总计数动态遍历结果集,获取数据并在你想要的地方使用 更新:我已经可以显示违规发生的日期。但我仍然无法计算在特定日期发生了多少次违规行为。有人可以帮我查询是什么吗?我真的不知道要使用什么查询。【参考方案2】:

我已经解决了这个问题:所以这里是 Sql 查询:

从 Violations group by Violation, Date_Violated 中选择 Violation, count(Violation), Date_Violated

谢谢大家的帮助!

【讨论】:

以上是关于如何计算一个项目在mysql中给定日期出现的次数的主要内容,如果未能解决你的问题,请参考以下文章

如何计算给定字符在一列字符串的每一行中出现的次数?

在 XSLT 中,如何计算给定属性值的每个不同值出现在输入 XML 中的次数?

计数值出现在 MySQL 中特定列中的次数

按不同周计算日名称的出现次数

用SQL语句计算出给定日期是星期几?

用SQL语句计算出给定日期是星期几?