【发布时间】:2019-01-29 10:46:34
【问题描述】:
我正在使用 SQL 构建一个程序 (COBOL) 来跟踪用户特殊时间的记录时间。
我有 3 张桌子:
table 1 - user logged time
table 2 - user logged time
table 3 - user profile
同一个用户不在表1和表2,所有用户都在表3。
我必须计算他们上次登录时使用配置文件 X 的用户数: 不到一个小时 1小时到5小时之间 超过 5 小时。
我找到了一种使用表 1 和表 3 进行 1 计数的方法:
`SELECT COUNT (DISTINCT A.user)
FROM table1 A
LEFT JOIN table3 B
ON B.user = A.user
WHERE B.profile = 'X'
AND A.HTIMEST = (SELECT MAX(HTIMEST)
FROM table1 A
WHERE B.user = A.user)
AND A.time BETWEEN 0 AND 1 `
这意味着在一个程序中就有很多查询。
如果您能提供任何帮助,我将不胜感激。
谢谢。
Table1:
User TimeLog Timestamp
1 0,5 2019-01-01
1 6 2018-11-31
4 2 2018-12-31
Table2:
User TimeLog Timestamp
2 0,5 2019-01-01
3 6 2018-11-31
5 2 2018-12-31
Table3:
User Profile
1 X
2 X
3 Z
4 X
5 Z
预期结果:
Time loged Count
<1h 2 (User 1 e User 2)
>1h -<5h 1 (User 4) (User 5 doesn't have the right profile)
>5h 0 (User 3 doesn't have the right profile, and user 1 has more
recent data)
【问题讨论】:
-
更新您的问题,添加表格架构、适当的数据样本和预期结果