median |
---|
0.0000 |
1 Create table If Not Exists Numbers (Number int, Frequency int); 2 3 insert into Numbers (Number, Frequency) values (0, 7); 4 insert into Numbers (Number, Frequency) values (1, 1); 5 insert into Numbers (Number, Frequency) values (2, 3); 6 insert into Numbers (Number, Frequency) values (3, 1);
最终SQL:
1 select 2 avg(t.number) as median 3 from 4 (select 5 n1.number, 6 n1.frequency, 7 (select 8 sum(frequency) 9 from 10 numbers n2 11 where 12 n2.number<=n1.number 13 ) as asc_frequency, 14 (select 15 sum(frequency) 16 from 17 numbers n3 18 where 19 n3.number>=n1.number 20 ) as desc_frequency 21 from 22 numbers n1 23 ) t 24 where 25 t.asc_frequency>= (select sum(frequency) from numbers)/2 26 and t.desc_frequency>= (select sum(frequency) from numbers)/2;