如何计算一个项目在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中给定日期出现的次数的主要内容,如果未能解决你的问题,请参考以下文章