##### Welcome to Subscribe On Youtube

Formatted question description: https://leetcode.ca/all/571.html

# 571. Find Median Given Frequency of Numbers

Hard

## Description

The Numbers table keeps the value of number and its frequency.

+----------+-------------+
|  Number  |  Frequency  |
+----------+-------------|
|  0       |  7          |
|  1       |  1          |
|  2       |  3          |
|  3       |  1          |
+----------+-------------+


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.

+--------+
| median |
+--------|
| 0.0000 |
+--------+


Write a query to find the median of all numbers and name the result as median.

## Solution

Suppose n1.Number is the median in table Numbers. Then the count of numbers less than or equal to n1.Number should be at least half of the total counts, and the count of numbers less than n1.Number should be at most half of the total counts.

# Write your MySQL query statement below
select avg(Number) as median from (
select n1.Number from Numbers n1 join Numbers n2 on n1.Number >= n2.Number
group by n1.Number
having
sum(n2.Frequency) >= (select sum(Frequency) from Numbers) / 2
and
sum(n2.Frequency) - avg(n1.Frequency) <= (select sum(Frequency) from Numbers) / 2
) med;