【发布时间】:2018-08-13 20:16:57
【问题描述】:
-
timesetup表(未归一化),此表用于时间条件,用于过滤结果
| time_id | period_from | period_to | session1_from | session1_to | session2_from | session2_to | session3_from | session3_to | session4_from | session4_to | session5_from | session5_to | |---------|-------------|------------|---------------|-------------|---------------|-------------|---------------|-------------|---------------|-------------|---------------|-------------| | 1 | 10/09/2015 | 11/09/2015 | 04:00:00 | 05:00:00 | 12:00:00 | 13:00:00 | 15:00:00 | 16:00:00 | 18:00:00 | 18:35:00 | 19:00:00 | 20:00:00 | | 2 | 12/09/2015 | 13/09/2015 | 04:10:00 | 05:10:00 | 12:10:00 | 13:10:00 | 15:10:00 | 16:10:00 | 18:10:00 | 18:45:00 | 19:10:00 | 20:10:00 | |------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
标准化版本:
dateperiode 表格:
| period_id | date_from | date_to |
|-----------|------------|------------|
| 1 | 10/09/2015 | 11/09/2015 |
| 2 | 12/09/2015 | 13/09/2015 |
|-------------------------------------|
sessionrange 表格:
| sessionrange_id | session | session_from | session_to |
|-----------------|-----------|--------------|-------------|
| 1 | 1 | 04:00:00 | 05:00:00 |
| 2 | 2 | 12:00:00 | 13:00:00 |
| 3 | 3 | 15:00:00 | 16:00:00 |
| 4 | 4 | 18:00:00 | 18:35:00 |
| 5 | 5 | 19:00:00 | 20:00:00 |
| 6 | 1 | 04:10:00 | 05:10:00 |
| 7 | 2 | 12:10:00 | 13:10:00 |
| 8 | 3 | 15:10:00 | 16:10:00 |
| 9 | 4 | 18:10:00 | 18:45:00 |
| 10 | 5 | 19:10:00 | 20:10:00 |
|-----------------|-----------|--------------|-------------|
timsetup 表格:
| period_id | sessionrange_id |
|-----------|-----------------|
| 1 | 1 |
| 1 | 2 |
| 1 | 3 |
| 1 | 4 |
| 1 | 5 |
| 2 | 6 |
| 2 | 7 |
| 2 | 8 |
| 2 | 9 |
| 2 | 10 |
|-----------|-----------------|
-
checktime表,此表包含来自指纹扫描仪的数据(tapping_time字段)|userid | tapping_time | |--------|----------------------| |234 | 10/09/2015 04:20:04 | |234 | 10/09/2015 04:20:06 | |234 | 10/09/2015 12:15:35 | |234 | 10/09/2015 15:31:11 | |234 | 10/09/2015 18:19:10 | |234 | 10/09/2015 18:19:15 | |234 | 10/09/2015 19:37:53 | |234 | 11/09/2015 04:38:42 | |234 | 11/09/2015 04:38:47 | |234 | 11/09/2015 12:21:27 | |234 | 11/09/2015 15:45:30 | |234 | 11/09/2015 15:45:37 | |234 | 11/09/2015 18:27:15 | |234 | 11/09/2015 19:55:08 | |234 | 11/09/2015 19:55:12 | |234 | 12/09/2015 04:45:10 | |234 | 12/09/2015 04:45:13 | |234 | 12/09/2015 13:12:55 | |234 | 12/09/2015 16:35:08 | |234 | 12/09/2015 18:49:10 | |234 | 12/09/2015 20:20:57 | |234 | 13/09/2015 05:11:56 | |234 | 13/09/2015 05:12:05 | |234 | 13/09/2015 12:45:13 | |234 | 13/09/2015 15:47:25 | |234 | 13/09/2015 18:31:27 | |234 | 13/09/2015 18:31:30 | |234 | 13/09/2015 20:01:18 | |-------------------------------|
我正在尝试创建一个 Access 查询,将日期/时间分组到 timesetup 表中的时段中。 tapping_time 根据timesetup 表中的会话 条件,每个会话(即使用户一次点击多次)应该只有一个 结果。此外,用户在会话之外的点击时间(session_from 和session_to 之间的时间)字段应该从不计数或出现在结果表中。
期望的结果:
| userid | date | tapping_on | session |
|--------|------------|------------|---------|
| 234 | 10/09/2015 | 04:20:04 | 1 |
| 234 | 10/09/2015 | 12:15:35 | 2 |
| 234 | 10/09/2015 | 15:31:11 | 3 |
| 234 | 10/09/2015 | 18:19:10 | 4 |
| 234 | 10/09/2015 | 19:37:53 | 5 |
| 234 | 11/09/2015 | 04:38:42 | 1 |
| 234 | 11/09/2015 | 12:21:27 | 2 |
| 234 | 11/09/2015 | 15:45:30 | 3 |
| 234 | 11/09/2015 | 18:27:15 | 4 |
| 234 | 11/09/2015 | 19:55:08 | 5 |
| 234 | 12/09/2015 | 04:45:10 | 1 |
| 234 | 12/09/2015 | 16:35:08 | 3 |
| 234 | 12/09/2015 | 18:49:10 | 4 |
| 234 | 13/09/2015 | 12:45:13 | 2 |
| 234 | 13/09/2015 | 15:47:25 | 3 |
| 234 | 13/09/2015 | 18:31:27 | 4 |
| 234 | 13/09/2015 | 20:01:18 | 5 |
|--------------------------------------------|
【问题讨论】:
-
您可以将示例数据添加为文本(而不是图像)或可下载的数据链接吗?我想我可以为你工作,但我不想重新输入数据来测试它。 (您可以像代码一样在问题中包含
monospace数据,方法是使用4 个空格的行或突出显示文本并单击{ }代码块按钮。 -
你试过按小时和分钟分组吗 - stackoverflow.com/questions/5002661/…
-
如果你想规范化那个时间设置表,我可以回答这个问题。目前,我的第一步是将其标准化,但它确实应该这样存储
-
我已经更新了@ashleedawg 的问题
-
@ErikvonAsmuth 是对的。规范化timesetup表,任务应该很容易解决。