让我们创建一个名为numbers的示例表
这个答案是针对mysql数据库的
在postgres Sql中,它简单地使用per_cont函数
创建表数字(
num INT,
频率整数
);
在数字表中插入值
插入数字
(7) 0
(1, 1),
(2、3),
(1) 3
(9,1),
(1, 1),
(2、3),
(1) 3
(9,1);
——select * from numbers
作为递归num_frequency (num,frequency, i)
(
选择num,频率,1
从数字
UNION ALL
选择num,频率,i + 1
从num_frequency
num_frequency的地方。I < num_frequency.frequency
)
select *
(max(当numbers=lower_limit时,则num else null end)/2
+max(当数字=upper_limit时,则num else null end)/2)作为中位数
从(
select *, total_number % 2,
情况下
当total_number%2=0时,total_number/2
Else (total_number+1)/2 end as lower_limit,
情况下
当total_number%2=0时,total_number/2+1
其他(total_number + 1) / 2
结束为upper_limit
从(
Select *,max(numbers) over() as total_number from (
Select num,row_number() over(按num排序)
作为num_frequency中的数字
b)
b)
b)