49757
49757
<ul class="md-nav__list">
49758
49758
49759
49759
<li class="md-nav__item">
49760
- <a href="#solution-1" class="md-nav__link">
49760
+ <a href="#solution-1-join-tables-grouping-filtering " class="md-nav__link">
49761
49761
<span class="md-ellipsis">
49762
- Solution 1
49762
+ Solution 1: Join Tables + Grouping + Filtering
49763
49763
</span>
49764
49764
</a>
49765
49765
@@ -76523,8 +76523,9 @@ <h2 id="description">Description</h2>
76523
76523
<h2 id="solutions">Solutions</h2>
76524
76524
<!-- solution:start -->
76525
76525
76526
- <h3 id="solution-1">Solution 1</h3>
76527
- <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>
76526
+ <h3 id="solution-1-join-tables-grouping-filtering">Solution 1: Join Tables + Grouping + Filtering</h3>
76527
+ <p>We can join the <code>Candidates</code> table and the <code>Rounds</code> table based on <code>interview_id</code>, filter out candidates with at least 2 years of work experience, then group by <code>candidate_id</code> to calculate the total score for each candidate, and finally filter out candidates with a total score greater than 15.</p>
76528
+ <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>
76528
76529
<div class="tabbed-content">
76529
76530
<div class="tabbed-block">
76530
76531
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span>
@@ -76537,13 +76538,31 @@ <h3 id="solution-1">Solution 1</h3>
76537
76538
<span class="normal">8</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>
76538
76539
<span class="k">SELECT</span><span class="w"> </span><span class="n">candidate_id</span>
76539
76540
<span class="k">FROM</span>
76540
- <span class="w"> </span><span class="n">Candidates</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="k">c</span>
76541
- <span class="w"> </span><span class="k">LEFT</span><span class="w"> </span><span class="k"> JOIN</span><span class="w"> </span><span class="n">Rounds</span><span class="w"> </span><span class="k">AS </span><span class="w"> </span><span class="n">r</span><span class="w"> </span><span class="k">ON</span><span class="w"> </span><span class="k">c</span><span class=" p">. </span><span class="n">interview_id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">r</span><span class=" p">.</span><span class="n">interview_id </span>
76541
+ <span class="w"> </span><span class="n">Candidates</span>
76542
+ <span class="w"> </span><span class="k">JOIN</span><span class="w"> </span><span class="n">Rounds</span><span class="w"> </span><span class="k">USING </span><span class="w"> </span><span class="p">( </span><span class="n">interview_id</span><span class="p">) </span>
76542
76543
<span class="k">WHERE</span><span class="w"> </span><span class="n">years_of_exp</span><span class="w"> </span><span class="o">>=</span><span class="w"> </span><span class="mi">2</span>
76543
- <span class="k">GROUP</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="k">c</span><span class="p">.</span><span class="n">interview_id </span>
76544
+ <span class="k">GROUP</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="mi">1 </span>
76544
76545
<span class="k">HAVING</span><span class="w"> </span><span class="k">SUM</span><span class="p">(</span><span class="n">score</span><span class="p">)</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="mi">15</span><span class="p">;</span>
76545
76546
</code></pre></div></td></tr></table></div>
76546
76547
</div>
76548
+ <div class="tabbed-block">
76549
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span>
76550
+ <span class="normal">2</span>
76551
+ <span class="normal">3</span>
76552
+ <span class="normal">4</span>
76553
+ <span class="normal">5</span>
76554
+ <span class="normal">6</span>
76555
+ <span class="normal">7</span>
76556
+ <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>
76557
+
76558
+
76559
+ <span class="k">def</span> <span class="nf">accepted_candidates</span><span class="p">(</span><span class="n">candidates</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">rounds</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>
76560
+ <span class="n">merged_df</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">merge</span><span class="p">(</span><span class="n">candidates</span><span class="p">,</span> <span class="n">rounds</span><span class="p">,</span> <span class="n">on</span><span class="o">=</span><span class="s2">"interview_id"</span><span class="p">)</span>
76561
+ <span class="n">filtered_df</span> <span class="o">=</span> <span class="n">merged_df</span><span class="p">[</span><span class="n">merged_df</span><span class="p">[</span><span class="s2">"years_of_exp"</span><span class="p">]</span> <span class="o">>=</span> <span class="mi">2</span><span class="p">]</span>
76562
+ <span class="n">grouped_df</span> <span class="o">=</span> <span class="n">filtered_df</span><span class="o">.</span><span class="n">groupby</span><span class="p">(</span><span class="s2">"candidate_id"</span><span class="p">)</span><span class="o">.</span><span class="n">agg</span><span class="p">({</span><span class="s2">"score"</span><span class="p">:</span> <span class="s2">"sum"</span><span class="p">})</span>
76563
+ <span class="k">return</span> <span class="n">grouped_df</span><span class="p">[</span><span class="n">grouped_df</span><span class="p">[</span><span class="s2">"score"</span><span class="p">]</span> <span class="o">></span> <span class="mi">15</span><span class="p">]</span><span class="o">.</span><span class="n">reset_index</span><span class="p">()[[</span><span class="s2">"candidate_id"</span><span class="p">]]</span>
76564
+ </code></pre></div></td></tr></table></div>
76565
+ </div>
76547
76566
</div>
76548
76567
</div>
76549
76568
<!-- solution:end -->
0 commit comments