File tree 4 files changed +115
-2
lines changed
solution/2400-2499/2494.Merge Overlapping Events in the Same Hall
4 files changed +115
-2
lines changed Original file line number Diff line number Diff line change 37
37
"solution/2000-2099/2066.Account Balance/Solution.sql",
38
38
"solution/2200-2299/2230.The Users That Are Eligible for Discount/Solution.sql",
39
39
"solution/2600-2699/2686.Immediate Food Delivery III/Solution.sql",
40
+ "solution/2400-2499/2494.Merge Overlapping Events in the Same Hall/Solution.sql",
40
41
"solution/2700-2799/2752.Customers with Maximum Number of Transactions on Consecutive Days/Solution.sql"
41
42
],
42
43
"options": {
Original file line number Diff line number Diff line change @@ -73,7 +73,44 @@ HallEvents 表:
73
73
<!-- 这里可写当前语言的特殊实现逻辑 -->
74
74
75
75
``` sql
76
-
76
+ # Write your MySQL query statement below
77
+ WITH
78
+ S AS (
79
+ SELECT
80
+ hall_id,
81
+ start_day,
82
+ end_day,
83
+ max (end_day) OVER (
84
+ PARTITION BY hall_id
85
+ ORDER BY start_day
86
+ ) AS cur_max_end_day
87
+ FROM HallEvents
88
+ ),
89
+ T AS (
90
+ SELECT
91
+ * ,
92
+ if(
93
+ start_day <= lag(cur_max_end_day) OVER (
94
+ PARTITION BY hall_id
95
+ ORDER BY start_day
96
+ ),
97
+ 0 ,
98
+ 1
99
+ ) AS start
100
+ FROM S
101
+ ),
102
+ P AS (
103
+ SELECT
104
+ * ,
105
+ sum (start) OVER (
106
+ PARTITION BY hall_id
107
+ ORDER BY start_day
108
+ ) AS gid
109
+ FROM T
110
+ )
111
+ SELECT hall_id, min (start_day) AS start_day, max (end_day) AS end_day
112
+ FROM P
113
+ GROUP BY hall_id, gid;
77
114
```
78
115
79
116
<!-- tabs:end -->
Original file line number Diff line number Diff line change @@ -68,7 +68,44 @@ Hall 3:
68
68
### ** SQL**
69
69
70
70
``` sql
71
-
71
+ # Write your MySQL query statement below
72
+ WITH
73
+ S AS (
74
+ SELECT
75
+ hall_id,
76
+ start_day,
77
+ end_day,
78
+ max (end_day) OVER (
79
+ PARTITION BY hall_id
80
+ ORDER BY start_day
81
+ ) AS cur_max_end_day
82
+ FROM HallEvents
83
+ ),
84
+ T AS (
85
+ SELECT
86
+ * ,
87
+ if(
88
+ start_day <= lag(cur_max_end_day) OVER (
89
+ PARTITION BY hall_id
90
+ ORDER BY start_day
91
+ ),
92
+ 0 ,
93
+ 1
94
+ ) AS start
95
+ FROM S
96
+ ),
97
+ P AS (
98
+ SELECT
99
+ * ,
100
+ sum (start) OVER (
101
+ PARTITION BY hall_id
102
+ ORDER BY start_day
103
+ ) AS gid
104
+ FROM T
105
+ )
106
+ SELECT hall_id, min (start_day) AS start_day, max (end_day) AS end_day
107
+ FROM P
108
+ GROUP BY hall_id, gid;
72
109
```
73
110
74
111
<!-- tabs:end -->
Original file line number Diff line number Diff line change
1
+ # Write your MySQL query statement below
2
+ WITH
3
+ S AS (
4
+ SELECT
5
+ hall_id,
6
+ start_day,
7
+ end_day,
8
+ max (end_day) OVER (
9
+ PARTITION BY hall_id
10
+ ORDER BY start_day
11
+ ) AS cur_max_end_day
12
+ FROM HallEvents
13
+ ),
14
+ T AS (
15
+ SELECT
16
+ * ,
17
+ if(
18
+ start_day <= lag(cur_max_end_day) OVER (
19
+ PARTITION BY hall_id
20
+ ORDER BY start_day
21
+ ),
22
+ 0 ,
23
+ 1
24
+ ) AS start
25
+ FROM S
26
+ ),
27
+ P AS (
28
+ SELECT
29
+ * ,
30
+ sum (start) OVER (
31
+ PARTITION BY hall_id
32
+ ORDER BY start_day
33
+ ) AS gid
34
+ FROM T
35
+ )
36
+ SELECT hall_id, min (start_day) AS start_day, max (end_day) AS end_day
37
+ FROM P
38
+ GROUP BY hall_id, gid;
You can’t perform that action at this time.
0 commit comments