|
72440 | 72440 | <ul class="md-nav__list">
|
72441 | 72441 |
|
72442 | 72442 | <li class="md-nav__item">
|
72443 |
| - <a href="#solution-1" class="md-nav__link"> |
| 72443 | + <a href="#solution-1-using-window-functions" class="md-nav__link"> |
72444 | 72444 | <span class="md-ellipsis">
|
72445 |
| - Solution 1 |
| 72445 | + Solution 1: Using Window Functions |
72446 | 72446 | </span>
|
72447 | 72447 | </a>
|
72448 | 72448 |
|
@@ -75367,11 +75367,40 @@ <h2 id="description">Description</h2>
|
75367 | 75367 | The accumulated runtime for all servers totals approximately 44.46 hours, equivalent to one full day plus some additional hours. However, since we consider only full days, the final output is rounded to 1 full day.</div>
|
75368 | 75368 |
|
75369 | 75369 | <h2 id="solutions">Solutions</h2>
|
75370 |
| -<h3 id="solution-1">Solution 1</h3> |
| 75370 | +<h3 id="solution-1-using-window-functions">Solution 1: Using Window Functions</h3> |
| 75371 | +<p>We can use the window function <code>LEAD</code> to get the time of the next status for each server. The time difference between two statuses is the running time of the server. Finally, we add up the running time of all servers, then divide by the number of seconds in a day to get the total running days of the servers.</p> |
75371 | 75372 | <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>
|
75372 | 75373 | <div class="tabbed-content">
|
75373 | 75374 | <div class="tabbed-block">
|
75374 |
| -<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><code> |
| 75375 | +<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 1</span> |
| 75376 | +<span class="normal"> 2</span> |
| 75377 | +<span class="normal"> 3</span> |
| 75378 | +<span class="normal"> 4</span> |
| 75379 | +<span class="normal"> 5</span> |
| 75380 | +<span class="normal"> 6</span> |
| 75381 | +<span class="normal"> 7</span> |
| 75382 | +<span class="normal"> 8</span> |
| 75383 | +<span class="normal"> 9</span> |
| 75384 | +<span class="normal">10</span> |
| 75385 | +<span class="normal">11</span> |
| 75386 | +<span class="normal">12</span> |
| 75387 | +<span class="normal">13</span> |
| 75388 | +<span class="normal">14</span> |
| 75389 | +<span class="normal">15</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> |
| 75390 | +<span class="k">WITH</span> |
| 75391 | +<span class="w"> </span><span class="n">T</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="p">(</span> |
| 75392 | +<span class="w"> </span><span class="k">SELECT</span> |
| 75393 | +<span class="w"> </span><span class="n">session_status</span><span class="p">,</span> |
| 75394 | +<span class="w"> </span><span class="n">status_time</span><span class="p">,</span> |
| 75395 | +<span class="w"> </span><span class="n">LEAD</span><span class="p">(</span><span class="n">status_time</span><span class="p">)</span><span class="w"> </span><span class="n">OVER</span><span class="w"> </span><span class="p">(</span> |
| 75396 | +<span class="w"> </span><span class="n">PARTITION</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">server_id</span> |
| 75397 | +<span class="w"> </span><span class="k">ORDER</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">status_time</span> |
| 75398 | +<span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">next_status_time</span> |
| 75399 | +<span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">Servers</span> |
| 75400 | +<span class="w"> </span><span class="p">)</span> |
| 75401 | +<span class="k">SELECT</span><span class="w"> </span><span class="n">FLOOR</span><span class="p">(</span><span class="k">SUM</span><span class="p">(</span><span class="n">TIMESTAMPDIFF</span><span class="p">(</span><span class="k">SECOND</span><span class="p">,</span><span class="w"> </span><span class="n">status_time</span><span class="p">,</span><span class="w"> </span><span class="n">next_status_time</span><span class="p">))</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mi">86400</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">total_uptime_days</span> |
| 75402 | +<span class="k">FROM</span><span class="w"> </span><span class="n">T</span> |
| 75403 | +<span class="k">WHERE</span><span class="w"> </span><span class="n">session_status</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'start'</span><span class="p">;</span> |
75375 | 75404 | </code></pre></div></td></tr></table></div>
|
75376 | 75405 | </div>
|
75377 | 75406 | </div>
|
|
0 commit comments