【问题标题】:how to get no of transactions on an hourly range如何获得每小时范围内的交易次数
【发布时间】:2015-03-24 14:49:47
【问题描述】:

表有列 Receiptno: 和 [TransDate] 和 Transtime。 eg:下面的数据

0080052594  2012-10-28  1899-12-30 19:01:38.000
0080052595  2012-10-28  1899-12-30 19:05:09.000
0080052596  2012-10-28  1899-12-30 19:05:15.000

我需要查询以获取每小时间隔和以下格式的交易数量

Hour Inetrval          No: Trans
09:01-10:00             10
10:01-11:00             16

【问题讨论】:

  • 你尝试了什么?你遇到了什么错误?

标签: sql sql-server


【解决方案1】:

您使用的是哪个 DBMS?您的字段是什么具体的数据类型?

在 Access 中,您可以使用总计查询(SQL 中的 GROUP BY),您可以使用附加字段(或分层查询)来执行此操作。您还可以使用内联代码字符串比较。这适用于交易日期和时间的字符串或 DateTime 字段。

例如,表 1:

RECEIPTNO   TRANSDATE   TRANSTIME
1   1/12/2015   4:32:00 PM
2   1/12/2015   4:45:00 PM
3   1/12/2015   4:52:00 PM
4   1/12/2015   3:57:00 PM
5   1/12/2015   4:07:00 PM
6   1/12/2015   4:09:00 PM
7   1/12/2015   6:15:00 PM
8   1/12/2015   12:34:00 PM
9   1/12/2015   2:45:00 PM
10  1/12/2015   3:15:00 PM
11  1/12/2015   3:17:00 PM
12  1/12/2015   3:49:00 PM
13  1/12/2015   3:47:00 PM
14  1/12/2015   2:52:00 PM
15  1/12/2015   2:36:00 PM
16  1/12/2015   2:17:00 PM
17  1/12/2015   2:25:00 PM
18  1/12/2015   4:12:00 PM

QUERY1 按小时计算为字符串:

SELECT Count(TABLE1.RECEIPTNO) AS CountOfRECEIPTNO, TABLE1.TRANSDATE, Left([TRANSTIME],InStr([TRANSTIME],":")-1) AS [HOUR]
FROM TABLE1
GROUP BY TABLE1.TRANSDATE, Left([TRANSTIME],InStr([TRANSTIME],":")-1)
ORDER BY Left([TRANSTIME],InStr([TRANSTIME],":")-1);

结果:

CountOfRECEIPTNO    TRANSDATE   HOUR
1   1/12/2015   12
5   1/12/2015   2
5   1/12/2015   3
6   1/12/2015   4
1   1/12/2015   6

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-15
    • 2022-08-19
    • 2018-12-24
    • 2011-11-06
    • 1970-01-01
    • 2011-10-15
    • 1970-01-01
    相关资源
    最近更新 更多