这是我的表emp的两列,我试图在我的动态Web应用程序(servlet,jsp)中触发2个单独的查询,其中Id能够从表中获取我的数据;
+-------------------------+----------+
| date | serialNo |
+-------------------------+----------+
| 2012-11-21 15:14:08.323 | 6 |
| 2012-11-21 12:48:12.067 | 6 |
| 2012-11-21 09:00:16.559 | 8 |
| 2012-11-21 05:24:20.091 | 9 |
| 2012-11-21 01:11:24.413 | 6 |
| 2012-11-21 14:57:28.531 | 11 |
| 2012-11-21 17:04:31.86 | 9 |
| 2012-11-21 19:33:36.259 | 13 |
| 2012-11-21 20:21:40.524 | 9 |
| 2012-11-21 23:00:44.362 | 8 |
| 2012-11-21 00:24:53.613 | 11 |
我想实施
将时间划分为无论日期如何
Time Division | Count
| 00:00:00 - 05:59:59 | 3
| 06:00:00 - 11:59:59 | 1
| 12:00:00 - 17:59:59 | 4
查询:select date count(*) as Count from info where (date between '%00:00:00%' and '%05:59:59%' or date between '%06:00:00%' and '%11:59:59%' or date between '%12:00:00%' and '%17:59:59%') group by date.
:( :(
我发现我一点都不接近:(我的查询中的任何一个,所以我将此提升到这个论坛。欢迎在此背景下提供任何类型的投入。
答案 0 :(得分:-1)
我建议你做以下事情:
定义一个表间隔,例如
CREATE TABLE IF NOT NOT EXISTS步骤(
name
varchar(10)NOT NULL,
初始时间NOT NULL,
最后时间NOT NULL
)ENGINE = InnoDB DEFAULT CHARSET = latin1;
填写姓名以及时间间隔的开始和结束时间:
INSERT INTO steps
(name
,initial
,final
)价值观
('Int1','00:00:00','05:59:59'),
('int2','06:00:00','11:59:59'),
('int3','12:00:00','17:59:59'),
('int4','18:00:00','23:59:59');
(我在17:59:59之后创建了一个最终间隔事件;如果你需要更多间隔,请根据需要更正!...
为您的数据创建一个表格(例如:
CREATE TABLE IF NOT NOT EXISTS times
(
time
时间非空,
freq
int(10)NOT NULL
)ENGINE = InnoDB DEFAULT CHARSET = latin1;
填写您的时间数据。
做最后的查询: 选择steps.name, 计数(*) 从步骤,时间 where(steps.initial和steps.final之间的时间) group by steps.name
结果如下:
“INT1”, “3” “INT2”, “1” “INT3”, “4” “INT4”, “3”
希望会有所帮助!