Skip to content

Commit dea9ec4

Browse files
add 571
1 parent fbd06e7 commit dea9ec4

File tree

2 files changed

+35
-0
lines changed

2 files changed

+35
-0
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -641,6 +641,7 @@ Your ideas/fixes/algorithms are more than welcome!
641641
|580|[Count Student Number in Departments](https://leetcode.com/problems/count-student-number-in-departments/)|[Solution](../master/database/_580.sql) | || Medium | Left Join
642642
|577|[Employee Bonus](https://leetcode.com/problems/employee-bonus/)|[Solution](../master/database/_577.sql) | || Easy |
643643
|574|[Winning Candidate](https://leetcode.com/problems/winning-candidate/)|[Solution](../master/database/_574.sql) | || Medium |
644+
|571|[Find Median Given Frequency of Numbers](https://leetcode.com/problems/find-median-given-frequency-of-numbers/)|[Solution](../master/database/_571.sql) | || Hard |
644645
|570|[Managers with at Least 5 Direct Reports](https://leetcode.com/problems/managers-with-at-least-5-direct-reports/)|[Solution](../master/database/_570.sql) | || Medium |
645646
|569|[Median Employee Salary](https://leetcode.com/problems/median-employee-salary/)|[Solution](../master/database/_569.sql) | || Hard |
646647
|262|[Trips and Users](https://leetcode.com/problems/trips-and-users/)|[Solution](../master/database/_262.sql)||| Hard| Inner Join

database/_571.sql

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
--571. Find Median Given Frequency of Numbers
2+
-- The Numbers table keeps the value of number and its frequency.
3+
--
4+
--+----------+-------------+
5+
--| Number | Frequency |
6+
--+----------+-------------|
7+
--| 0 | 7 |
8+
--| 1 | 1 |
9+
--| 2 | 3 |
10+
--| 3 | 1 |
11+
--+----------+-------------+
12+
--
13+
--In this table, the numbers are 0, 0, 0, 0, 0, 0, 0, 1, 2, 2, 2, 3, so the median is (0 + 0) / 2 = 0.
14+
--
15+
--+--------+
16+
--| median |
17+
--+--------|
18+
--| 0.0000 |
19+
--+--------+
20+
--
21+
--Write a query to find the median of all numbers and name the result as median.
22+
23+
select FORMAT(avg(n.Number),4)*1.0 as median
24+
from Numbers n left join
25+
(
26+
select Number, @prev := @count as prevNumber, (@count := @count + Frequency) as countNumber
27+
from Numbers,
28+
(select @count := 0, @prev := 0, @total := (select sum(Frequency) from Numbers)) temp order by Number
29+
) n2
30+
on n.Number = n2.Number
31+
where
32+
(prevNumber < floor((@total+1)/2) and countNumber >= floor((@total+1)/2))
33+
or
34+
(prevNumber < floor((@total+2)/2) and countNumber >= floor((@total+2)/2))

0 commit comments

Comments
 (0)