postgresql根据名称和身份证查询在同一时间段内在不同项目出现的情况
时间: 2024-10-22 21:28:05 浏览: 7
在PostgreSQL中,如果你想要根据姓名(name)和身份证号(ID card number)查询某个时间段内,用户在不同的项目(project_id)中的活动记录,你可以使用SQL的JOIN、GROUP BY以及时间范围条件来实现。假设你有两张表,一张是`users`(存储个人信息),另一张是`activity_log`(存储用户的活动日志),表结构大概如下:
```sql
-- users 表
CREATE TABLE users (
id serial PRIMARY KEY,
name VARCHAR(100),
ID_card_number VARCHAR(50)
);
-- activity_log 表
CREATE TABLE activity_log (
user_id INTEGER REFERENCES users(id),
project_id INTEGER,
timestamp TIMESTAMP,
-- 其他字段...
);
```
查询语句可以类似这样编写:
```sql
SELECT u.name, u.ID_card_number, al.project_id, COUNT(*) as activity_count
FROM users u
JOIN activity_log al ON u.id = al.user_id
WHERE u.name = '目标姓名' AND u.ID_card_number = '目标身份证号'
AND al.timestamp BETWEEN '开始日期' AND '结束日期'
GROUP BY u.name, u.ID_card_number, al.project_id;
```
这里,你需要将`'目标姓名'`, `'目标身份证号'`, `'开始日期'`和`'结束日期'`替换为你实际要查询的具体值。
阅读全文