WITH commute_records AS (
SELECT
r.user_id,
DATE_FORMAT(r.start_time, '%Y%m') as commute_month,
COUNT(DISTINCT DATE(r.start_time) ) as commute_days
FROM hello_bike_riding_rcd r
WHERE
((r.start_loc in ('中关村电子城','凯德广场','北京机床研究所','天启大厦','恒通国际商务园','瀚海国际大厦','西门子大厦')
and end_loc in ('将台西','望京','望京南','阜通'))
or(r.start_loc in ('将台西','望京','望京南','阜通')) and end_loc in ('中关村电子城','凯德广场','北京机床研究所','天启大厦','恒通国际商务园','瀚海国际大厦','西门子大厦'))
AND start_time >= '2020-01-01'
GROUP BY user_id, commute_month
HAVING commute_days >= 5
),
active_users AS (
SELECT DISTINCT m1.user_id
FROM commute_records m1
JOIN commute_records m2
JOIN commute_records m3
WHERE m2.user_id = m1.user_id
AND m3.user_id = m1.user_id
AND m2.commute_month = m1.commute_month + 1
AND m3.commute_month = m2.commute_month + 1
)
SELECT
u.user_id,
CASE WHEN a.user_id IS NOT NULL THEN 1 ELSE 0 END as active_tag
FROM (
SELECT DISTINCT user_id
FROM commute_records
) u
LEFT JOIN active_users a ON u.user_id = a.user_id
;
WITH commute_records AS (
SELECT
r.user_id,
DATE_FORMAT(r.start_time, '%Y%m') as commute_month,
COUNT(DISTINCT DATE(r.start_time) ) as commute_days
FROM hello_bike_riding_rcd r
WHERE
((r.start_loc in ('中关村电子城','凯德广场','北京机床研究所','天启大厦','恒通国际商务园','瀚海国际大厦','西门子大厦')
and end_loc in ('将台西','望京','望京南','阜通'))
or(r.start_loc in ('将台西','望京','望京南','阜通')) and end_loc in ('中关村电子城','凯德广场','北京机床研究所','天启大厦','恒通国际商务园','瀚海国际大厦','西门子大厦'))
AND start_time >= '2020-01-01'
GROUP BY user_id, commute_month
HAVING commute_days >= 5
),
active_users AS (
SELECT DISTINCT m1.user_id
FROM commute_records m1
JOIN commute_records m2
JOIN commute_records m3
WHERE m2.user_id = m1.user_id
AND m3.user_id = m1.user_id
AND m2.commute_month = m1.commute_month + 1
AND m3.commute_month = m2.commute_month + 1
)
SELECT
u.user_id,
CASE WHEN a.user_id IS NOT NULL THEN 1 ELSE 0 END as active_tag
FROM (
SELECT DISTINCT user_id
FROM commute_records
) u
LEFT JOIN active_users a ON u.user_id = a.user_id
;
WITH commute_records AS (
SELECT
r.user_id,
DATE_FORMAT(r.start_time, '%Y%m') as commute_month,
COUNT(DISTINCT DATE(r.start_time) ) as commute_days
FROM hello_bike_riding_rcd r
WHERE
((r.start_loc in ('中关村电子城','凯德广场','北京机床研究所','天启大厦','恒通国际商务园','瀚海国际大厦','西门子大厦')
and end_loc in ('将台西','望京','望京南','阜通'))
or(r.start_loc in ('将台西','望京','望京南','阜通')) and end_loc in ('中关村电子城','凯德广场','北京机床研究所','天启大厦','恒通国际商务园','瀚海国际大厦','西门子大厦'))
AND start_time >= '2020-01-01'
GROUP BY user_id, commute_month
HAVING commute_days >= 5
)
SELECT
u.user_id,
CASE WHEN a.active_tag IS not NULL THEN 1 ELSE 0 END as active_tag
FROM (
SELECT DISTINCT user_id
FROM commute_records
) u
LEFT JOIN (
SELECT DISTINCT m1.user_id,1 as active_tag
FROM commute_records m1
JOIN commute_records m2
JOIN commute_records m3
WHERE m2.user_id = m1.user_id
AND m3.user_id = m1.user_id
AND m2.commute_month = m1.commute_month + 1
AND m3.commute_month = m2.commute_month + 1
)a ON u.user_id = a.user_id
WITH commute_records AS (
SELECT
r.user_id,
DATE_FORMAT(r.start_time, '%Y%m') as commute_month,
COUNT(DISTINCT DATE(r.start_time) ) as commute_days
FROM hello_bike_riding_rcd r
WHERE
((r.start_loc in ('中关村电子城','凯德广场','北京机床研究所','天启大厦','恒通国际商务园','瀚海国际大厦','西门子大厦')
and end_loc in ('将台西','望京','望京南','阜通'))
or(r.start_loc in ('将台西','望京','望京南','阜通')) and end_loc in ('中关村电子城','凯德广场','北京机床研究所','天启大厦','恒通国际商务园','瀚海国际大厦','西门子大厦'))
AND start_time >= '2020-01-01'
GROUP BY user_id, commute_month
HAVING commute_days >= 5
)
SELECT
u.user_id,
CASE WHEN a.user_id IS NOT NULL THEN 1 ELSE 0 END as active_tag
FROM (
SELECT DISTINCT user_id
FROM commute_records
) u
LEFT JOIN (
SELECT DISTINCT m1.user_id
FROM commute_records m1
JOIN commute_records m2
JOIN commute_records m3
WHERE m2.user_id = m1.user_id
AND m3.user_id = m1.user_id
AND m2.commute_month = m1.commute_month + 1
AND m3.commute_month = m2.commute_month + 1
)a ON u.user_id = a.user_id
WITH commute_records AS (
SELECT
r.user_id,
DATE_FORMAT(r.start_time, '%Y%m') as commute_month,
COUNT(DISTINCT DATE(r.start_time) ) as commute_days
FROM hello_bike_riding_rcd r
WHERE
((r.start_loc in ('中关村电子城','凯德广场','北京机床研究所','天启大厦','恒通国际商务园','瀚海国际大厦','西门子大厦')
and end_loc in ('将台西','望京','望京南','阜通'))
or(r.start_loc in ('将台西','望京','望京南','阜通')) and end_loc in ('中关村电子城','凯德广场','北京机床研究所','天启大厦','恒通国际商务园','瀚海国际大厦','西门子大厦'))
AND start_time >= '2020-01-01'
GROUP BY user_id, commute_month
),
active_users AS (
SELECT DISTINCT m1.user_id
FROM commute_records m1
JOIN commute_records m2
JOIN commute_records m3
WHERE m2.user_id = m1.user_id
AND m3.user_id = m1.user_id
AND m2.commute_month = m1.commute_month + 1
AND m3.commute_month = m2.commute_month + 1 and m1.commute_days >= 5 and m2.commute_days >= 5 and m3.commute_days >= 5
)
SELECT
u.user_id,
CASE WHEN a.user_id IS NOT NULL THEN 1 ELSE 0 END as active_tag
FROM (
SELECT DISTINCT user_id
FROM commute_records
) u
LEFT JOIN active_users a ON u.user_id = a.user_id
;
WITH commute_records AS (
SELECT
r.user_id,
DATE_FORMAT(r.start_time, '%Y%m') as commute_month,
COUNT(DISTINCT DATE(r.start_time) ) as commute_days
FROM hello_bike_riding_rcd r
WHERE
((r.start_loc in ('中关村电子城','凯德广场','北京机床研究所','天启大厦','恒通国际商务园','瀚海国际大厦','西门子大厦')
and end_loc in ('将台西','望京','望京南','阜通'))
or(r.start_loc in ('将台西','望京','望京南','阜通')) and end_loc in ('中关村电子城','凯德广场','北京机床研究所','天启大厦','恒通国际商务园','瀚海国际大厦','西门子大厦'))
AND start_time >= '2020-01-01'
GROUP BY user_id, commute_month
),
active_users AS (
SELECT DISTINCT m1.user_id
FROM commute_records m1
JOIN commute_records m2
JOIN commute_records m3
WHERE m2.user_id = m1.user_id
AND m3.user_id = m1.user_id
AND m2.commute_month = m1.commute_month + 1
AND m3.commute_month = m2.commute_month + 1 and m1.commute_days >= 5
)
SELECT
u.user_id,
CASE WHEN a.user_id IS NOT NULL THEN 1 ELSE 0 END as active_tag
FROM (
SELECT DISTINCT user_id
FROM commute_records
) u
LEFT JOIN active_users a ON u.user_id = a.user_id
;
WITH commute_records AS (
SELECT
r.user_id,
DATE_FORMAT(r.start_time, '%Y%m') as commute_month,
COUNT(DISTINCT DATE(r.start_time) ) as commute_days
FROM hello_bike_riding_rcd r
WHERE
((r.start_loc in ('中关村电子城','凯德广场','北京机床研究所','天启大厦','恒通国际商务园','瀚海国际大厦','西门子大厦')
and end_loc in ('将台西','望京','望京南','阜通'))
or(r.start_loc in ('将台西','望京','望京南','阜通')) and end_loc in ('中关村电子城','凯德广场','北京机床研究所','天启大厦','恒通国际商务园','瀚海国际大厦','西门子大厦'))
AND start_time >= '2020-01-01'
GROUP BY user_id, commute_month
HAVING commute_days >= 5
),
active_users AS (
SELECT DISTINCT user_id
FROM commute_records m1
WHERE EXISTS (
SELECT 1 FROM commute_records m2
WHERE m2.user_id = m1.user_id AND m2.commute_month = m1.commute_month + 1
AND EXISTS (
SELECT 1 FROM commute_records m3
WHERE m3.user_id = m2.user_id AND m3.commute_month = m2.commute_month + 1
)
)
)
SELECT
u.user_id,
CASE WHEN a.user_id IS NOT NULL THEN 1 ELSE 0 END as active_tag
FROM (
SELECT DISTINCT user_id
FROM commute_records
) u
LEFT JOIN active_users a ON u.user_id = a.user_id
;
WITH commute_records AS (
SELECT
r.user_id,
DATE_FORMAT(r.start_time, '%Y%m') as commute_month,
COUNT(DISTINCT DATE(r.start_time) ) as commute_days
FROM hello_bike_riding_rcd r
WHERE
((r.start_loc in ('中关村电子城','凯德广场','北京机床研究所','天启大厦','恒通国际商务园','瀚海国际大厦','西门子大厦')
and end_loc in ('将台西','望京','望京南','阜通'))
or(r.start_loc in ('将台西','望京','望京南','阜通')) and end_loc in ('中关村电子城','凯德广场','北京机床研究所','天启大厦','恒通国际商务园','瀚海国际大厦','西门子大厦'))
AND start_time >= '2020-01-01'
GROUP BY user_id, commute_month
HAVING commute_days >= 5
),
active_users AS (
SELECT DISTINCT m1.user_id
FROM commute_records m1
JOIN commute_records m2
on m2.user_id = m1.user_idand m2.commute_month = m1.commute_month + 1
JOIN commute_records m3
on m3.user_id = m2.user_id and
m3.commute_month = m2.commute_month + 1
)
SELECT
u.user_id,
CASE WHEN a.user_id IS NOT NULL THEN 1 ELSE 0 END as active_tag
FROM (
SELECT DISTINCT user_id
FROM commute_records
) u
LEFT JOIN active_users a ON u.user_id = a.user_id
;
WITH commute_records AS (
SELECT
r.user_id,
DATE_FORMAT(r.start_time, '%Y%m') AS commute_month,
COUNT(DISTINCT DATE(r.start_time)) AS commute_days
FROM hello_bike_riding_rcd r
WHERE
(
(r.start_loc IN ('中关村电子城','凯德广场','北京机床研究所','天启大厦','恒通国际商务园','瀚海国际大厦','西门子大厦')
AND r.end_loc IN ('将台西','望京','望京南','阜通'))
OR
(r.start_loc IN ('将台西','望京','望京南','阜通')
AND r.end_loc IN ('中关村电子城','凯德广场','北京机床研究所','天启大厦','恒通国际商务园','瀚海国际商务园','西门子大厦'))
)
AND r.start_time >= '2020-01-01'
GROUP BY r.user_id, commute_month
HAVING commute_days >= 5
),
active_users AS (
SELECT
m1.user_id
FROM commute_records m1
JOIN commute_records m2
ON m2.user_id = m1.user_id
AND m2.commute_month = DATE_FORMAT(DATE_ADD(STR_TO_DATE(m1.commute_month, '%Y%m'), INTERVAL 1 MONTH), '%Y%m')
JOIN commute_records m3
ON m3.user_id = m1.user_id
AND m3.commute_month = DATE_FORMAT(DATE_ADD(STR_TO_DATE(m2.commute_month, '%Y%m'), INTERVAL 1 MONTH), '%Y%m')
GROUP BY m1.user_id
)
SELECT
u.user_id,
CASE WHEN a.user_id IS NOT NULL THEN 1 ELSE 0 END AS active_tag
FROM (
SELECT DISTINCT user_id
FROM commute_records
) u
LEFT JOIN active_users a ON u.user_id = a.user_id;
WITH commute_records AS (
SELECT
r.user_id,
DATE_FORMAT(r.start_time, '%Y%m') as commute_month,
COUNT(DISTINCT DATE(r.start_time) ) as commute_days,
ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY COUNT(DISTINCT commute_days )) AS rn
FROM (SELECT * from hello_bike_riding_rcd wherestart_time >= '2020-01-01') r
JOIN (
SELECT
loc_nm,
CASE
WHEN loc_nm IN ('将台西') THEN '地铁站'
WHEN loc_nm IN ('北京机床研究所') THEN '写字楼'
ELSE loc_type
END as loc_type
FROM gd_loc_map
WHERE loc_type IN ('地铁站', '写字楼')
) start_loc ON r.start_loc = start_loc.loc_nm
JOIN (
SELECT
loc_nm,
CASE
WHEN loc_nm IN ('将台西') THEN '地铁站'
WHEN loc_nm IN ('北京机床研究所') THEN '写字楼'
ELSE loc_type
END as loc_type
FROM gd_loc_map
WHERE loc_type IN ('地铁站', '写字楼')
) end_loc ON r.end_loc = end_loc.loc_nm
WHERE
start_loc.loc_type != end_loc.loc_type
GROUP BY user_id, commute_month
HAVING commute_days >= 5
),
active_users AS (
SELECT DISTINCT s1.user_id
FROM commute_records s1
JOIN commute_records s3
where s1.user_id = s3.user_id
and s1.rn+2=s3.rn and s1.commute_month+2=s3.commute_month)
SELECT
u.user_id,
CASE WHEN a.user_id IS NOT NULL THEN 1 ELSE 0 END as active_tag
FROM (
SELECT DISTINCT user_id
FROM hello_bike_riding_rcd
) u
LEFT JOIN active_users a ON u.user_id = a.user_id
;
WITH commute_records AS (
SELECT
r.user_id,
DATE_FORMAT(r.start_time, '%Y%m') as commute_month,
COUNT(DISTINCT DATE(r.start_time) ) as commute_days
FROM hello_bike_riding_rcd r
WHERE
((r.start_loc in ('中关村电子城','凯德广场','北京机床研究所','天启大厦','恒通国际商务园','瀚海国际大厦','西门子大厦')
and end_loc in ('将台西','望京','望京南','阜通'))
or(r.start_loc in ('将台西','望京','望京南','阜通')) and end_loc in ('中关村电子城','凯德广场','北京机床研究所','天启大厦','恒通国际商务园','瀚海国际大厦','西门子大厦'))
AND start_time >= '2020-01-01'
GROUP BY user_id, commute_month
HAVING commute_days >= 5
),
active_users AS (
SELECT DISTINCT m1.user_id
FROM commute_records m1
JOIN commute_records m2
JOIN commute_records m3
WHERE m2.user_id = m1.user_id
AND m3.user_id = m1.user_id
AND m2.commute_month = m1.commute_month + 1
AND m3.commute_month = m1.commute_month + 2
)
SELECT
u.user_id,
CASE WHEN a.user_id IS NOT NULL THEN 1 ELSE 0 END as active_tag
FROM (
SELECT DISTINCT user_id
FROM commute_records
) u
LEFT JOIN active_users a ON u.user_id = a.user_id
;
WITH commute_records AS (
SELECT
r.user_id,
DATE_FORMAT(r.start_time, '%Y%m') as commute_month,
COUNT(DISTINCT DATE(r.start_time) ) as commute_days,
ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY COUNT(DISTINCT commute_days )) AS rn
FROM (SELECT * from hello_bike_riding_rcd wherestart_time >= '2020-01-01') r
JOIN (
SELECT
loc_nm,
CASE
WHEN loc_nm IN ('将台西') THEN '地铁站'
WHEN loc_nm IN ('北京机床研究所') THEN '写字楼'
ELSE loc_type
END as loc_type
FROM gd_loc_map
WHERE loc_type IN ('地铁站', '写字楼')
) start_loc ON r.start_loc = start_loc.loc_nm
JOIN (
SELECT
loc_nm,
CASE
WHEN loc_nm IN ('将台西') THEN '地铁站'
WHEN loc_nm IN ('北京机床研究所') THEN '写字楼'
ELSE loc_type
END as loc_type
FROM gd_loc_map
WHERE loc_type IN ('地铁站', '写字楼')
) end_loc ON r.end_loc = end_loc.loc_nm
WHERE
start_loc.loc_type != end_loc.loc_type
GROUP BY user_id, commute_month
HAVING commute_days >= 5
),
active_users AS (
SELECT DISTINCT s1.user_id
FROM commute_records s1
JOIN commute_records s3
where s1.user_id = s3.user_id
and s1.rn+2=s3.rn and s1.commute_month+2=s3.commute_month)
SELECT
u.user_id,
CASE WHEN a.user_id IS NOT NULL THEN 1 ELSE 0 END as active_tag
FROM (
SELECT DISTINCT user_id
FROM hello_bike_riding_rcd
) u
LEFT JOIN active_users a ON u.user_id = a.user_id
;