@@ -91317,7 +91317,7 @@ <h2 id="solutions">Solutions</h2>
91317
91317
91318
91318
<h3 id="solution-1-equi-join-subquery">Solution 1: Equi-Join + Subquery</h3>
91319
91319
<p>We can use an equi-join to join the <code>Employee</code> table and the <code>Department</code> table based on <code>Employee.departmentId = Department.id</code>, and then use a subquery to find the highest salary for each department. Finally, we can use a <code>WHERE</code> clause to filter out the employees with the highest salary in each department.</p>
91320
- <div class="tabbed-set tabbed-alternate" data-tabs="1:1 "><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">MySQL</label></div>
91320
+ <div class="tabbed-set tabbed-alternate" data-tabs="1:2 "><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" />< div class="tabbed-labels"><label for="__tabbed_1_1">MySQL</label><label for="__tabbed_1_2">Python3 </label></div>
91321
91321
<div class="tabbed-content">
91322
91322
<div class="tabbed-block">
91323
91323
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 1</span>
@@ -91343,6 +91343,48 @@ <h3 id="solution-1-equi-join-subquery">Solution 1: Equi-Join + Subquery</h3>
91343
91343
<span class="w"> </span><span class="p">);</span>
91344
91344
</code></pre></div></td></tr></table></div>
91345
91345
</div>
91346
+ <div class="tabbed-block">
91347
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 1</span>
91348
+ <span class="normal"> 2</span>
91349
+ <span class="normal"> 3</span>
91350
+ <span class="normal"> 4</span>
91351
+ <span class="normal"> 5</span>
91352
+ <span class="normal"> 6</span>
91353
+ <span class="normal"> 7</span>
91354
+ <span class="normal"> 8</span>
91355
+ <span class="normal"> 9</span>
91356
+ <span class="normal">10</span>
91357
+ <span class="normal">11</span>
91358
+ <span class="normal">12</span>
91359
+ <span class="normal">13</span>
91360
+ <span class="normal">14</span>
91361
+ <span class="normal">15</span>
91362
+ <span class="normal">16</span>
91363
+ <span class="normal">17</span>
91364
+ <span class="normal">18</span>
91365
+ <span class="normal">19</span>
91366
+ <span class="normal">20</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="kn">import</span><span class="w"> </span><span class="nn">pandas</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">pd</span>
91367
+
91368
+
91369
+ <span class="k">def</span><span class="w"> </span><span class="nf">department_highest_salary</span><span class="p">(</span>
91370
+ <span class="n">employee</span><span class="p">:</span> <span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">,</span> <span class="n">department</span><span class="p">:</span> <span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span>
91371
+ <span class="p">)</span> <span class="o">-></span> <span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">:</span>
91372
+ <span class="c1"># Merge the two tables on departmentId and department id</span>
91373
+ <span class="n">merged</span> <span class="o">=</span> <span class="n">employee</span><span class="o">.</span><span class="n">merge</span><span class="p">(</span><span class="n">department</span><span class="p">,</span> <span class="n">left_on</span><span class="o">=</span><span class="s1">'departmentId'</span><span class="p">,</span> <span class="n">right_on</span><span class="o">=</span><span class="s1">'id'</span><span class="p">)</span>
91374
+
91375
+ <span class="c1"># Find the maximum salary for each department</span>
91376
+ <span class="n">max_salaries</span> <span class="o">=</span> <span class="n">merged</span><span class="o">.</span><span class="n">groupby</span><span class="p">(</span><span class="s1">'departmentId'</span><span class="p">)[</span><span class="s1">'salary'</span><span class="p">]</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="s1">'max'</span><span class="p">)</span>
91377
+
91378
+ <span class="c1"># Filter employees who have the highest salary in their department</span>
91379
+ <span class="n">top_earners</span> <span class="o">=</span> <span class="n">merged</span><span class="p">[</span><span class="n">merged</span><span class="p">[</span><span class="s1">'salary'</span><span class="p">]</span> <span class="o">==</span> <span class="n">max_salaries</span><span class="p">]</span>
91380
+
91381
+ <span class="c1"># Select required columns and rename them</span>
91382
+ <span class="n">result</span> <span class="o">=</span> <span class="n">top_earners</span><span class="p">[[</span><span class="s1">'name_y'</span><span class="p">,</span> <span class="s1">'name_x'</span><span class="p">,</span> <span class="s1">'salary'</span><span class="p">]]</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
91383
+ <span class="n">result</span><span class="o">.</span><span class="n">columns</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'Department'</span><span class="p">,</span> <span class="s1">'Employee'</span><span class="p">,</span> <span class="s1">'Salary'</span><span class="p">]</span>
91384
+
91385
+ <span class="k">return</span> <span class="n">result</span>
91386
+ </code></pre></div></td></tr></table></div>
91387
+ </div>
91346
91388
</div>
91347
91389
</div>
91348
91390
<!-- solution:end -->
@@ -91424,6 +91466,11 @@ <h3 id="solution-2-equi-join-window-function">Solution 2: Equi-Join + Window Fun
91424
91466
91425
91467
<nav>
91426
91468
91469
+ <a href="https://github.com/iamAntimPal" class="md-author" title="@iamAntimPal">
91470
+
91471
+ <img src="https://avatars.githubusercontent.com/u/134076504?v=4&size=72" alt="iamAntimPal">
91472
+ </a>
91473
+
91427
91474
<a href="https://github.com/yanglbme" class="md-author" title="@yanglbme">
91428
91475
91429
91476
<img src="https://avatars.githubusercontent.com/u/21008209?v=4&size=72" alt="yanglbme">
@@ -91439,12 +91486,13 @@ <h3 id="solution-2-equi-join-window-function">Solution 2: Equi-Join + Window Fun
91439
91486
<img src="https://avatars.githubusercontent.com/u/70502828?v=4&size=72" alt="YangFong">
91440
91487
</a>
91441
91488
91442
- <a href="https://github.com/LjyYano" class="md-author" title="@LjyYano">
91443
-
91444
- <img src="https://avatars.githubusercontent.com/u/9548512?v=4&size=72" alt="LjyYano">
91445
- </a>
91446
91489
91447
91490
91491
+
91492
+ <a href="https://github.com/doocs/leetcode/blob/main/solution/0100-0199/0184.Department%20Highest%20Salary/README_EN.md" class="md-author md-author--more">
91493
+ +1
91494
+ </a>
91495
+
91448
91496
91449
91497
</nav>
91450
91498
</span>
0 commit comments