1094710947 <ul class="md-nav__list">
1094810948
1094910949 <li class="md-nav__item">
10950- <a href="#solution-1" class="md-nav__link">
10950+ <a href="#solution-1-self-join-conditional-filtering " class="md-nav__link">
1095110951 <span class="md-ellipsis">
10952- Solution 1
10953- </span>
10954- </a>
10955-
10956- </li>
10957-
10958- <li class="md-nav__item">
10959- <a href="#solution-2" class="md-nav__link">
10960- <span class="md-ellipsis">
10961- Solution 2
10952+ Solution 1: Self-Join + Conditional Filtering
1096210953 </span>
1096310954 </a>
1096410955
@@ -79346,7 +79337,7 @@ <h2 id="description">Description</h2>
7934679337<p><strong class="example">Example 1:</strong></p>
7934779338
7934879339<pre>
79349- <strong>Input:</strong>
79340+ <strong>Input:</strong>
7935079341Employee table:
7935179342+----+-------+--------+-----------+
7935279343| id | name | salary | managerId |
@@ -79356,7 +79347,7 @@ <h2 id="description">Description</h2>
7935679347| 3 | Sam | 60000 | Null |
7935779348| 4 | Max | 90000 | Null |
7935879349+----+-------+--------+-----------+
79359- <strong>Output:</strong>
79350+ <strong>Output:</strong>
7936079351+----------+
7936179352| Employee |
7936279353+----------+
@@ -79370,67 +79361,43 @@ <h2 id="description">Description</h2>
7937079361<h2 id="solutions">Solutions</h2>
7937179362<!-- solution:start -->
7937279363
79373- <h3 id="solution-1">Solution 1</h3>
79364+ <h3 id="solution-1-self-join-conditional-filtering">Solution 1: Self-Join + Conditional Filtering</h3>
79365+ <p>We can find employees' salaries and their managers' salaries by self-joining the <code>Employee</code> table, then filter out employees whose salaries are higher than their managers' salaries.</p>
7937479366<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">Python3</label><label for="__tabbed_1_2">MySQL</label></div>
7937579367<div class="tabbed-content">
7937679368<div class="tabbed-block">
79377- <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span>
79378- <span class="normal">2</span>
79379- <span class="normal">3</span>
79380- <span class="normal">4</span>
79381- <span class="normal">5</span>
79382- <span class="normal">6</span>
79383- <span class="normal">7</span>
79384- <span class="normal">8</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="kn">import</span> <span class="nn">pandas</span> <span class="k">as</span> <span class="nn">pd</span>
79369+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 1</span>
79370+ <span class="normal"> 2</span>
79371+ <span class="normal"> 3</span>
79372+ <span class="normal"> 4</span>
79373+ <span class="normal"> 5</span>
79374+ <span class="normal"> 6</span>
79375+ <span class="normal"> 7</span>
79376+ <span class="normal"> 8</span>
79377+ <span class="normal"> 9</span>
79378+ <span class="normal">10</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="kn">import</span> <span class="nn">pandas</span> <span class="k">as</span> <span class="nn">pd</span>
7938579379
7938679380
7938779381<span class="k">def</span> <span class="nf">find_employees</span><span class="p">(</span><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="o">-></span> <span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">:</span>
79388- <span class="n">df</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">right</span><span class="o">=</span><span class="n">employee</span><span class="p">,</span> <span class="n">how</span><span class="o">=</span><span class="s2">"left"</span><span class="p">,</span> <span class="n">left_on</span><span class="o">=</span><span class="s2">"managerId"</span><span class="p">,</span> <span class="n">right_on</span><span class="o">=</span><span class="s2">"id"</span><span class="p">)</span>
79389- <span class="n">emp</span> <span class="o">=</span> <span class="n">df</span><span class="p">[</span><span class="n">df</span><span class="p">[</span><span class="s2">"salary_x"</span><span class="p">]</span> <span class="o">></span> <span class="n">df</span><span class="p">[</span><span class="s2">"salary_y"</span><span class="p">]][</span><span class="s2">"name_x"</span><span class="p">]</span>
79390-
79391- <span class="k">return</span> <span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">({</span><span class="s2">"Employee"</span><span class="p">:</span> <span class="n">emp</span><span class="p">})</span>
79392- </code></pre></div></td></tr></table></div>
79393- </div>
79394- <div class="tabbed-block">
79395- <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span>
79396- <span class="normal">2</span>
79397- <span class="normal">3</span>
79398- <span class="normal">4</span>
79399- <span class="normal">5</span>
79400- <span class="normal">6</span>
79401- <span class="normal">7</span>
79402- <span class="normal">8</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">SELECT</span><span class="w"> </span><span class="n">Name</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">Employee</span>
79403- <span class="k">FROM</span><span class="w"> </span><span class="n">Employee</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">Curr</span>
79404- <span class="k">WHERE</span>
79405- <span class="w"> </span><span class="n">Salary</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="p">(</span>
79406- <span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="n">Salary</span>
79407- <span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">Employee</span>
79408- <span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">Id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">Curr</span><span class="p">.</span><span class="n">ManagerId</span>
79409- <span class="w"> </span><span class="p">);</span>
79382+ <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>
79383+ <span class="n">employee</span><span class="p">,</span> <span class="n">left_on</span><span class="o">=</span><span class="s2">"managerId"</span><span class="p">,</span> <span class="n">right_on</span><span class="o">=</span><span class="s2">"id"</span><span class="p">,</span> <span class="n">suffixes</span><span class="o">=</span><span class="p">(</span><span class="s2">""</span><span class="p">,</span> <span class="s2">"_manager"</span><span class="p">)</span>
79384+ <span class="p">)</span>
79385+ <span class="n">result</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="s2">"salary"</span><span class="p">]</span> <span class="o">></span> <span class="n">merged</span><span class="p">[</span><span class="s2">"salary_manager"</span><span class="p">]][[</span><span class="s2">"name"</span><span class="p">]]</span>
79386+ <span class="n">result</span><span class="o">.</span><span class="n">columns</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"Employee"</span><span class="p">]</span>
79387+ <span class="k">return</span> <span class="n">result</span>
7941079388</code></pre></div></td></tr></table></div>
7941179389</div>
79412- </div>
79413- </div>
79414- <!-- solution:end -->
79415-
79416- <!-- solution:start -->
79417-
79418- <h3 id="solution-2">Solution 2</h3>
79419- <div class="tabbed-set tabbed-alternate" data-tabs="2:1"><input checked="checked" id="__tabbed_2_1" name="__tabbed_2" type="radio" /><div class="tabbed-labels"><label for="__tabbed_2_1">MySQL</label></div>
79420- <div class="tabbed-content">
7942179390<div class="tabbed-block">
7942279391<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span>
7942379392<span class="normal">2</span>
7942479393<span class="normal">3</span>
7942579394<span class="normal">4</span>
7942679395<span class="normal">5</span>
79427- <span class="normal">6</span>
79428- <span class="normal">7</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="o">#</span><span class="w"> </span><span class="k">Write</span><span class="w"> </span><span class="n">your</span><span class="w"> </span><span class="n">MySQL</span><span class="w"> </span><span class="n">query</span><span class="w"> </span><span class="k">statement</span><span class="w"> </span><span class="n">below</span>
79429- <span class="k">SELECT</span>
79430- <span class="w"> </span><span class="n">e1</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">Employee</span>
79396+ <span class="normal">6</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="o">#</span><span class="w"> </span><span class="k">Write</span><span class="w"> </span><span class="n">your</span><span class="w"> </span><span class="n">MySQL</span><span class="w"> </span><span class="n">query</span><span class="w"> </span><span class="k">statement</span><span class="w"> </span><span class="n">below</span>
79397+ <span class="k">SELECT</span><span class="w"> </span><span class="n">e1</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="n">Employee</span>
7943179398<span class="k">FROM</span>
79432- <span class="w"> </span><span class="n">Employee</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class=" n">e1</span>
79433- <span class="w"> </span><span class="k">JOIN</span><span class="w"> </span><span class="n">Employee</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class=" n">e2</span><span class="w"> </span><span class="k">ON</span><span class="w"> </span><span class="n">e1</span><span class="p">.</span><span class="n">managerId</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">e2</span><span class="p">.</span><span class="n">id</span>
79399+ <span class="w"> </span><span class="n">Employee</span><span class="w"> </span><span class="n">e1</span>
79400+ <span class="w"> </span><span class="k">JOIN</span><span class="w"> </span><span class="n">Employee</span><span class="w"> </span><span class="n">e2</span><span class="w"> </span><span class="k">ON</span><span class="w"> </span><span class="n">e1</span><span class="p">.</span><span class="n">managerId</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">e2</span><span class="p">.</span><span class="n">id</span>
7943479401<span class="k">WHERE</span><span class="w"> </span><span class="n">e1</span><span class="p">.</span><span class="n">salary</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="n">e2</span><span class="p">.</span><span class="n">salary</span><span class="p">;</span>
7943579402</code></pre></div></td></tr></table></div>
7943679403</div>
0 commit comments