【发布时间】:2021-09-23 05:17:26
【问题描述】:
我对 SQL 有点陌生。有没有可能的方法来检查用户名是否存在于某个时间范围内。
假设 TableExample 在 2021 年 4 月 1 日至 4 月 3 日之间有 4 个用户名和时间范围(日期)。如何检查每个可用日期时间存在的用户名?
| username | type | date |
|---|---|---|
| uname1 | 1 | 2021-04-01 |
| uname2 | 2 | 2021-04-01 |
| uname3 | 2 | 2021-04-01 |
| uname4 | 1 | 2021-04-01 |
| uname1 | 2 | 2021-04-02 |
| uname3 | 2 | 2021-04-02 |
| uname4 | 2 | 2021-04-02 |
| uname1 | 1 | 2021-04-03 |
| uname2 | 2 | 2021-04-03 |
| uname4 | 2 | 2021-04-03 |
预期输出将是 uname1 和 uname4
| username | type | date |
|---|---|---|
| uname1 | 1 | 2021-04-01 |
| uname4 | 1 | 2021-04-01 |
| uname1 | 2 | 2021-04-02 |
| uname4 | 2 | 2021-04-02 |
| uname1 | 1 | 2021-04-03 |
| uname4 | 2 | 2021-04-03 |
【问题讨论】:
-
你能告诉我们你尝试了什么吗?在我看来,
WHERE date BETWEEN ... AND ... GROUP BY username, date HAVING COUNT(date) = 3是可能的,但只是头脑风暴 - 需要测试 -
您需要不同的 uname 或不同的日期吗?如果不是,那么按照 urban 建议的简单查询就可以完成您的工作。
-
嗨@urban & @swapnil bandiwadekar 感谢您的回答!我一直在尝试做的是这样的
select distinct username, case when date between '2021-04-01' and '2021-04-03' then 1 else 0 end as username_is_exist from SQLTutorial..testrun1 where username is not null group by username, date但输出仍然显示每个 uname "1" 而不是 uname1 & uname4 "1" 然后是 uname2、3、5 和 6 "0" -
用您正在使用的数据库标记您的问题。