SQL 最近 6 个月的访问量
SQL last 6 months visits
报告的目的:识别在过去 6 个月内没有洗牙的患者
编写 sql 脚本的最佳方法是什么?
患者table
patient_id
patient_name
11
杰森·斯特朗
22
瑞恩·史密斯
33
凯西锤
访问次数table
v_id
patient_id
reason_visit
date_of_visit
1
11
医疗
2021 年 1 月 1 日
2
22
洗牙
11/10/2020
3
22
每年
2021 年 1 月 1 日
4
11
洗牙
5/10/2021
5
11
每年
2021 年 5 月 1 日
预计
patient_id
patient_name
22
瑞恩·史密斯
33
凯西锤
凯西在名单上,因为她不在访问中table,这意味着她从未接受过我们办公室的清洁。
Ryan Smith 在名单上,因为是时候进行清洁了。
我也在想,如果患者在过去 6 个月内没有预约,但有一个未来的洗牙预约怎么办?我想排除那个。
在 postgre 中sql:
select * from Patients p
where not exists (
select 1 from Visits v
where v.patient_id = p.patient_id
and reason_visit = 'dental cleaning'
and date_of_visit < now() - interval '6 month'
)
在 sql 服务器中将 now() - interval '6 month'
替换为 dateadd(month, -6,getdate())
在 mysql date_add(now(), interval -6 month)
报告的目的:识别在过去 6 个月内没有洗牙的患者
编写 sql 脚本的最佳方法是什么?
患者table
patient_id | patient_name |
---|---|
11 | 杰森·斯特朗 |
22 | 瑞恩·史密斯 |
33 | 凯西锤 |
访问次数table
v_id | patient_id | reason_visit | date_of_visit |
---|---|---|---|
1 | 11 | 医疗 | 2021 年 1 月 1 日 |
2 | 22 | 洗牙 | 11/10/2020 |
3 | 22 | 每年 | 2021 年 1 月 1 日 |
4 | 11 | 洗牙 | 5/10/2021 |
5 | 11 | 每年 | 2021 年 5 月 1 日 |
预计
patient_id | patient_name |
---|---|
22 | 瑞恩·史密斯 |
33 | 凯西锤 |
凯西在名单上,因为她不在访问中table,这意味着她从未接受过我们办公室的清洁。
Ryan Smith 在名单上,因为是时候进行清洁了。
我也在想,如果患者在过去 6 个月内没有预约,但有一个未来的洗牙预约怎么办?我想排除那个。
在 postgre 中sql:
select * from Patients p
where not exists (
select 1 from Visits v
where v.patient_id = p.patient_id
and reason_visit = 'dental cleaning'
and date_of_visit < now() - interval '6 month'
)
在 sql 服务器中将 now() - interval '6 month'
替换为 dateadd(month, -6,getdate())
在 mysql date_add(now(), interval -6 month)