Что такое данные x и данные y в контексте исходного вопроса?Обычно ОТ сопровождается именем таблицы.Но тогда почему две таблицы перечислены, когда вопрос относится только к одной?
В исходном вопросе data x, data y
соединяет таблицу с собой, создавая декартово произведение.Исходная таблица имела 7 строк, и, соединяя каждую строку с каждой другой строкой, получилось 49 строк.
Кроме того, я не понял эту часть: HAVING
SUM(SIGN(1-SIGN(y.val-x.val)))
.
По сути, эта функция для каждого значения определяет, сколько значений меньше рассматриваемого значения.Затем он сравнивает эту сумму с половиной числа + 1 ... и затем выбирает это значение в качестве медианы.
Это происходит путем вычитания значения (x.val
) из сравниваемого значения (y.val
).Затем он использует функцию SIGN
для преобразования результата в -1
, 0
или 1
.Затем он вычитает это значение, а затем снова принимает SIGN
.Таким образом, если значение y.val
меньше значения x.val
, с которым оно сравнивается, конечный результат будет 1
.Например, допустим, что y
равно 3
, а x
равно 5
.
3 - 5 = -2
SIGN(-2) = -1
1 - (-1) = 2
SIGN(2) = 1
Если y
было 5
, а x
было 3
..конечный результат будет 0
:
5 - 3 = 2
SIGN(2) = 1
1 - 1 = 0
SIGN(0) = 0
Суммирование результатов этих сравнений дает нам число, которое указывает, сколько значений предшествует изучаемому нами значению.Затем он сравнивает это SUM
с COUNT(*) + 1 / 2
, чтобы найти средний диапазон ...