Skip to content
This repository was archived by the owner on Jan 23, 2025. It is now read-only.

Commit fcfcad7

Browse files
committed
updating practice problems query
1 parent 69dd143 commit fcfcad7

File tree

2 files changed

+101
-7
lines changed

2 files changed

+101
-7
lines changed

queries/get_practice_problems

Lines changed: 51 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ FIRST @pageSize@
55
FROM table(MULTISET(
66
SELECT
77
p.problem_id
8-
, c.component_id
8+
, c.component_id
99
, ro.room_id
1010
, rc.round_id
1111
, rc.division_id
@@ -16,15 +16,62 @@ SELECT
1616
WHEN (p.problem_type_id = 1 AND p.proposed_difficulty_id = 3) THEN 'Hard'::nvarchar(50)
1717
END AS difficulty
1818
, rc.points
19-
, 'New' AS status
20-
, 0 AS my_points
19+
, NVL(CASE WHEN EXISTS (
20+
SELECT 1
21+
FROM component_state cs
22+
WHERE cs.status_id < 120
23+
AND cs.component_id = c.component_id
24+
AND cs.coder_id = @userId@
25+
UNION ALL
26+
SELECT 1
27+
FROM practice_component_state pcs
28+
WHERE pcs.status_id < 120
29+
AND pcs.component_id = c.component_id
30+
AND pcs.coder_id = @userId@
31+
) THEN 'New'::nvarchar(50)
32+
WHEN EXISTS (
33+
SELECT 1
34+
FROM component_state cs
35+
WHERE cs.status_id = 150
36+
AND cs.component_id = c.component_id
37+
AND cs.coder_id = @userId@
38+
UNION ALL
39+
SELECT 1
40+
FROM practice_component_state pcs
41+
WHERE pcs.status_id = 150
42+
AND pcs.component_id = c.component_id
43+
AND pcs.coder_id = @userId@
44+
) THEN 'Solved'::nvarchar(50)
45+
WHEN EXISTS (
46+
SELECT 1
47+
FROM component_state cs
48+
WHERE cs.status_id >= 120
49+
AND cs.component_id = c.component_id
50+
AND cs.status_id != 150
51+
AND cs.coder_id = @userId@
52+
UNION ALL
53+
SELECT 1
54+
FROM practice_component_state pcs
55+
WHERE pcs.status_id >= 120
56+
AND pcs.component_id = c.component_id
57+
AND pcs.status_id != 150
58+
AND pcs.coder_id = @userId@
59+
) THEN 'Viewed'::nvarchar(50)
60+
END, 'New') AS status
61+
, NVL((
62+
SELECT
63+
points
64+
FROM practice_component_state pcs
65+
WHERE pcs.round_id = rc.round_id
66+
AND pcs.component_id = c.component_id
67+
AND pcs.coder_id = @userId@
68+
), 0) AS my_points
2169
FROM problem p
2270
INNER JOIN component c ON c.problem_id = p.problem_id
2371
INNER JOIN round_component rc ON rc.component_id = c.component_id
2472
INNER JOIN round r ON r.round_id = rc.round_id AND r.status = 'A' AND r.round_type_id = 3
2573
INNER JOIN room ro ON ro.round_id = rc.round_id AND ro.room_type_id = 3 -- practice room
2674
INNER JOIN problem_type_lu ptl ON ptl.problem_type_id = p.problem_type_id
27-
INNER JOIN contest con ON con.contest_id = r.contest_id
2875
WHERE p.status_id = 90
2976
)) srp
3077
WHERE 1=1

queries/get_practice_problems_count

Lines changed: 50 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,62 @@ SELECT
1313
WHEN (p.problem_type_id = 1 AND p.proposed_difficulty_id = 3) THEN 'Hard'::nvarchar(50)
1414
END AS difficulty
1515
, rc.points
16-
, 'New' AS status
17-
, 0 AS my_points
16+
, NVL(CASE WHEN EXISTS (
17+
SELECT 1
18+
FROM component_state cs
19+
WHERE cs.status_id < 120
20+
AND cs.component_id = c.component_id
21+
AND cs.coder_id = @userId@
22+
UNION ALL
23+
SELECT 1
24+
FROM practice_component_state pcs
25+
WHERE pcs.status_id < 120
26+
AND pcs.component_id = c.component_id
27+
AND pcs.coder_id = @userId@
28+
) THEN 'New'::nvarchar(50)
29+
WHEN EXISTS (
30+
SELECT 1
31+
FROM component_state cs
32+
WHERE cs.status_id = 150
33+
AND cs.component_id = c.component_id
34+
AND cs.coder_id = @userId@
35+
UNION ALL
36+
SELECT 1
37+
FROM practice_component_state pcs
38+
WHERE pcs.status_id = 150
39+
AND pcs.component_id = c.component_id
40+
AND pcs.coder_id = @userId@
41+
) THEN 'Solved'::nvarchar(50)
42+
WHEN EXISTS (
43+
SELECT 1
44+
FROM component_state cs
45+
WHERE cs.status_id >= 120
46+
AND cs.component_id = c.component_id
47+
AND cs.status_id != 150
48+
AND cs.coder_id = @userId@
49+
UNION ALL
50+
SELECT 1
51+
FROM practice_component_state pcs
52+
WHERE pcs.status_id >= 120
53+
AND pcs.component_id = c.component_id
54+
AND pcs.status_id != 150
55+
AND pcs.coder_id = @userId@
56+
) THEN 'Viewed'::nvarchar(50)
57+
END, 'New') AS status
58+
, NVL((
59+
SELECT
60+
points
61+
FROM practice_component_state pcs
62+
WHERE pcs.round_id = rc.round_id
63+
AND pcs.component_id = c.component_id
64+
AND pcs.coder_id = @userId@
65+
), 0) AS my_points
1866
FROM problem p
1967
INNER JOIN component c ON c.problem_id = p.problem_id
2068
INNER JOIN round_component rc ON rc.component_id = c.component_id
2169
INNER JOIN round r ON r.round_id = rc.round_id AND r.status = 'A' AND r.round_type_id = 3
2270
INNER JOIN room ro ON ro.round_id = rc.round_id AND ro.room_type_id = 3 -- practice room
2371
INNER JOIN problem_type_lu ptl ON ptl.problem_type_id = p.problem_type_id
24-
INNER JOIN contest con ON con.contest_id = r.contest_id
2572
WHERE p.status_id = 90
2673
)) srp
2774
WHERE 1=1

0 commit comments

Comments
 (0)