java 怎样实现记录一段时间内(如一个月)发生的事件,并且对其分类并统计次数?用链表吗 具体如何实现?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 怎样实现记录一段时间内(如一个月)发生的事件,并且对其分类并统计次数?用链表吗 具体如何实现?相关的知识,希望对你有一定的参考价值。

目前已知:一条记录有两个重要字段(时间、事件类型)
像你这种需求,如果不是太复杂的话,或者是说数据不太大
如果是按按事件类型,直接用一个Map<事件类型,次数>就可以了

如果是项目中的应用,请用数据库追问

考虑到记录的是报警事件,用Map怎么实现?有带解释的代码吗

参考技术A 一个表 就可以了 看你需要查询什么
ID 时间 分类 事件
这几个字段就可以了
剩下都是查询的事情 按时间 查 按分类查 查完了统计次数 都可以用查询语句来实现 不用很复杂的表追问

查询报警事件,你说的查是指用哪个数据库操作还是?

参考技术B cbxfbfxbxfh

MYSQL数据库,怎样查询一个时间范围内,每个时间点内的数据?

比如说,有一张订单表order,表中每一行记录都有一个time字段,
现在要查询1月-2月之间所有的订单,查出来的结果集是1月到2月之间每一日的订单,

就像这样的

1.假设数据库中有一个名为TestTest的表。表格内容如下图所示。

2.Select*fromTesttestwhereMonth(date)='9';,它表示对TestTest表中的9月份记录的查询。

3.单击“Run”执行SQL语句,用户可以从下面看到,9月份的三个记录被查询了。

4.Select*fromTesttestwhereyear(Date)='2017';在美国2017年是被质疑的一年。如下图所示,2017年仅查询了一条记录,如下图。

参考技术A SELECT
DATE_FORMAT( datetime列, '%Y-%m-%d' ) AS 日期,
SUM( ... ) AS 合计,
COUNT( ... ) AS 行数
FROM

GROUP BY
DATE_FORMAT( datetime列, '%Y-%m-%d' )追问

这样按时间分组查的话,如果其中有一天没有记录的话,就不会出现在结果集里了吧,现在是要每一天都要显示,没有记录的那一天就要显示0,这改怎么写?

追答CREATE TABLE test12 (
  test_date  datetime,
  test_amt   INT
);


INSERT INTO test12  VALUES ( '2013-01-01 12:00:00',  1);
INSERT INTO test12  VALUES ( '2013-01-03 12:00:00',  3);
INSERT INTO test12  VALUES ( '2013-01-05 12:00:00',  5);
INSERT INTO test12  VALUES ( '2013-01-07 12:00:00',  7);
INSERT INTO test12  VALUES ( '2013-01-09 12:00:00',  9);
INSERT INTO test12  VALUES ( '2013-01-11 12:00:00',  11);
INSERT INTO test12  VALUES ( '2013-01-13 12:00:00',  13);
INSERT INTO test12  VALUES ( '2013-01-15 12:00:00',  15);

  
SELECT
  t2.all_day  AS `日期`,
  IFNULL(SUM(  test_amt  ), 0)    AS  `合计`,
  COUNT( test_amt )  AS  `行数`
FROM
(
SELECT
  @rownum:=@rownum+1 AS NO,
  DATE_ADD(  '2013-01-01',  INTERVAL @rownum DAY)  AS  all_day
FROM
  (SELECT @rownum:=-1) r,
  test12
) t2
  LEFT  JOIN  test12  ON  (  t2.all_day  = DATE(test12.test_date) )
WHERE
  t2.all_day >= '2013-01-01'
  AND t2.all_day <= '2013-01-06'
GROUP BY
  t2.all_day;


查询结果由于字数限制, 贴不出来了。

结果有6行,  1号到6号, 其中, 1,3,5 号有数据, 2,4,6号数值为0

本回答被提问者采纳
参考技术B 表结构拿出来看看啊追问

就是一个例子,没有表,主要就是有个日期字段,datetime类型的

追答

你给的图里没有订单信息,比如订单号。再说,至少你把你的sql语句贴出来。

追问

我随便建了一张表,现在要做的就是,比如查询条件是2013-05-01到2013--06-01,返回的结果

时间                 qty总数

2013-05-01      4

2013-05-02      2

2013-05-03      0

.....一直到2013-06-01

这种形式,怎么写sql

追答

select * from tb1 where time between 2013-05-01' and 2013--06-01'

以上是关于java 怎样实现记录一段时间内(如一个月)发生的事件,并且对其分类并统计次数?用链表吗 具体如何实现?的主要内容,如果未能解决你的问题,请参考以下文章

MYSQL数据库,怎样查询一个时间范围内,每个时间点内的数据?

java怎样向一个文件(如txt文件)中写入一段数据,保存后下一次打开继续使用?

java用sql语句查询某一时间段内的记录

怎样检测线程的状态(c代码 )如:线程是死亡、阻塞、挂起等。

java实现日期排序问题

怎样用JAVA实现在指定的时间间隔内重复做一个操作