Ich habe zwei Tabellen Fact_trips (tb) dim_city(tb)
Driver I'd. City id
Trip id country id
Rider I'd
Time stamp
City id
Die Frage ist, Fahrer, die in den letzten 7 Tagen keine Fahrt unternommen haben, von ihrer letzten Fahrt in Land 150 abzuholen
Lösung des Problems
Wir können prüfen, ob der driver_is in einer Unterabfrage ist, um die Fahrer zu erhalten, die in den letzten 7 Tagen in einer Stadt im Land 150 waren, und sie mit ausschließen not in
.
create table Fact_trips (Driver_id int, Trip_id int, Rider_id int, Time date, city_id int);
create table dim_city (City_id int, country_id int);
insert into dim_city values
(1,150),(2,250);
insert into Fact_trips values
(1,1,1,'2022-04-01',1),
(3,1,1,'2022-04-10',2),
(2,1,1,'2022-04-08',1);
GO
5 Reihen betroffen
select t.driver_id
from Fact_trips t
where t.driver_id not in
(
select f.driver_id
from fact_trips f
join dim_city c
on f.city_id = c.city_id
where [Time] >= DATEADD(day,-7, GETDATE())
and country_id = 150
)
GO
| Fahrer-ID |
| --------: |
| 1 |
| 3 |
select f.driver_id
from fact_trips f
join dim_city c
on f.city_id = c.city_id
where [Time] >= DATEADD(day,-7, GETDATE())
and country_id = 150
GO
| Fahrer-ID |
| --------: |
| 2 |
db<>fiddle hier
Keine Kommentare:
Kommentar veröffentlichen