diff --git a/build.gradle b/build.gradle
index 68a83f90b..73ef36512 100644
--- a/build.gradle
+++ b/build.gradle
@@ -14,7 +14,7 @@ repositories {
dependencies {
testImplementation 'org.junit.jupiter:junit-jupiter:[5.12.2,)'
testImplementation 'org.hamcrest:hamcrest-core:[3.0,)'
- testImplementation 'org.zapodot:embedded-db-junit-jupiter:2.2.0'
+ testImplementation 'org.zapodot:embedded-db-junit-jupiter:2.2.2'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher:[1.12.2,)'
}
diff --git a/pom-central.xml b/pom-central.xml
index d6d508779..14589c8a1 100644
--- a/pom-central.xml
+++ b/pom-central.xml
@@ -167,7 +167,7 @@
org.zapodot
embedded-db-junit-jupiter
- 2.2.0
+ 2.2.2
test
diff --git a/pom-central21.xml b/pom-central21.xml
index d3ab00ca6..b863008eb 100644
--- a/pom-central21.xml
+++ b/pom-central21.xml
@@ -173,7 +173,7 @@
org.zapodot
embedded-db-junit-jupiter
- 2.2.0
+ 2.2.2
test
diff --git a/pom.xml b/pom.xml
index 86d410f7d..8567e0b15 100644
--- a/pom.xml
+++ b/pom.xml
@@ -190,7 +190,7 @@
org.zapodot
embedded-db-junit-jupiter
- 2.2.0
+ 2.2.2
test
diff --git a/src/main/java/g3401_3500/s3482_analyze_organization_hierarchy/script.sql b/src/main/java/g3401_3500/s3482_analyze_organization_hierarchy/script.sql
index 7503ec213..3e1ea4668 100644
--- a/src/main/java/g3401_3500/s3482_analyze_organization_hierarchy/script.sql
+++ b/src/main/java/g3401_3500/s3482_analyze_organization_hierarchy/script.sql
@@ -1,43 +1,62 @@
# Write your MySQL query statement below
-# #Hard #Database #2025_03_11_Time_712_ms_(100.00%)_Space_0.0_MB_(100.00%)
-with recursive org_hierarchy(orig_employee_id, orig_employee_name, employee_id, employee_name, manager_id, salary, org_level) as
-(
- select employee_id as orig_employee_id,
- employee_name as orig_employee_name,
+# #Hard #Database #2025_05_30_Time_294_ms_(80.03%)_Space_0.0_MB_(100.00%)
+WITH RECURSIVE org_hierarchy (
+ orig_employee_id,
+ orig_employee_name,
employee_id,
employee_name,
manager_id,
salary,
- 1 as org_level
- from Employees
+ org_level
+) AS (
+ SELECT
+ employee_id AS orig_employee_id,
+ employee_name AS orig_employee_name,
+ employee_id,
+ employee_name,
+ manager_id,
+ salary,
+ 1 AS org_level
+ FROM Employees
+
UNION ALL
- select P.orig_employee_id,
- P.orig_employee_name,
- CH.employee_id,
- CH.employee_name,
- CH.manager_id,
- CH.salary,
- P.org_level + 1
- from org_hierarchy P, Employees CH
- where ch.manager_id = P.employee_id
+
+ SELECT
+ P.orig_employee_id,
+ P.orig_employee_name,
+ CH.employee_id,
+ CH.employee_name,
+ CH.manager_id,
+ CH.salary,
+ P.org_level + 1
+ FROM org_hierarchy P
+ JOIN Employees CH ON CH.manager_id = P.employee_id
),
-CEO_hierarchy as (
- select org_hierarchy.employee_id as SUB_employee_id,
- org_hierarchy.employee_name,
- org_hierarchy.org_level as sub_level
- from org_hierarchy, Employees
- where org_hierarchy.orig_employee_id = Employees.employee_id
- and Employees.manager_id is null
+CEO_hierarchy (
+ sub_employee_id,
+ employee_name,
+ sub_level
+) AS (
+ SELECT
+ oh.employee_id AS sub_employee_id,
+ oh.employee_name,
+ oh.org_level AS sub_level
+ FROM org_hierarchy oh
+ JOIN Employees e ON oh.orig_employee_id = e.employee_id
+ WHERE e.manager_id IS NULL
)
-select
-org_hierarchy.ORIG_EMPLOYEE_ID as employee_id,
-org_hierarchy.ORIG_EMPLOYEE_name as employee_name,
-CEO_hierarchy.sub_level as "level",
-count(*) - 1 as team_size,
-sum(org_hierarchy.salary) as budget
-from org_hierarchy, CEO_hierarchy
-where org_hierarchy.ORIG_EMPLOYEE_ID = CEO_hierarchy.SUB_employee_id
-group by org_hierarchy.ORIG_EMPLOYEE_ID,
-org_hierarchy.ORIG_EMPLOYEE_name,
-CEO_hierarchy.sub_level
-order by 3 asc, 5 desc, 2
+
+SELECT
+ oh.orig_employee_id AS employee_id,
+ oh.orig_employee_name AS employee_name,
+ ch.sub_level AS level,
+ COUNT(*) - 1 AS team_size,
+ SUM(oh.salary) AS budget
+FROM org_hierarchy oh
+JOIN CEO_hierarchy ch ON oh.orig_employee_id = ch.sub_employee_id
+GROUP BY
+ oh.orig_employee_id,
+ oh.orig_employee_name,
+ ch.sub_level
+ORDER BY
+ level ASC, budget DESC, employee_name ASC;