pgsql查询9-12月已登录且1-5月未登录且in_operator不是DX的数据
时间: 2024-03-11 09:51:37 浏览: 14
您可以使用以下 SQL 查询语句来实现您的需求:
```
SELECT *
FROM your_table
WHERE
extract(month from login_time) >= 9
AND extract(month from login_time) <= 12
AND extract(month from login_time) NOT IN (1, 2, 3, 4, 5)
AND last_login_time < '2022-01-01'
AND in_operator != 'DX';
```
其中,`your_table` 是您要查询的表名,`login_time` 是记录用户登录时间的字段名,`last_login_time` 是记录用户最后一次登录时间的字段名,`in_operator` 是记录用户所属运营商的字段名。
这个查询语句会返回在 9-12 月份中登录过,但在 1-5 月份没有登录过,且最后一次登录时间早于 2022 年 1 月 1 日,并且所属运营商不是 DX 的数据。
相关问题
pgsql查询9-12月已登录且1-5月未登录且in_operator不为DX
您可以尝试使用以下 PostgreSQL 查询语句实现您的需求:
```
SELECT *
FROM your_table
WHERE
(EXTRACT(MONTH FROM login_time) BETWEEN 9 AND 12) -- 9-12月已登录
AND (EXTRACT(MONTH FROM login_time) NOT BETWEEN 1 AND 5) -- 1-5月未登录
AND in_operator <> 'DX'; -- in_operator 不为 DX
```
请注意,这里的 `your_table` 是您存储用户登录信息的表名,您需要将其替换为您实际使用的表名。同时,如果您的表中包含了用户 ID 等信息,您可以将 `SELECT *` 替换为您需要查询的字段列表。
此外,上述查询语句中使用了 PostgreSQL 内置函数 `EXTRACT`,它可以从时间戳中提取出指定的日期部分(如月份),您需要将其中的 `login_time` 替换为您实际使用的时间戳字段名。
希望对您有所帮助!
pgsql查询2022年9-12月已登录且2023年1-5月未登录且in_operator不是DX的数据
您可以使用以下 SQL 查询语句来实现您的需求:
```
SELECT *
FROM your_table
WHERE
extract(year from login_time) = 2022
AND extract(month from login_time) >= 9
AND extract(month from login_time) <= 12
AND NOT EXISTS (
SELECT 1
FROM your_table subquery
WHERE
extract(year from subquery.login_time) = 2023
AND extract(month from subquery.login_time) BETWEEN 1 AND 5
AND subquery.user_id = your_table.user_id
)
AND in_operator != 'DX';
```
其中,`your_table` 是您要查询的表名,`login_time` 是记录用户登录时间的字段名,`in_operator` 是记录用户所属运营商的字段名,`user_id` 是记录用户 ID 的字段名。
这个查询语句会返回在 2022 年 9-12 月份中登录过,但在 2023 年 1-5 月份没有登录过,且所属运营商不是 DX 的数据。查询语句使用了一个子查询来查找用户在 2023 年 1-5 月份的登录记录,如果存在这样的记录,则不会返回该用户。