中位数定义为将数据集的上半部分与下半部分分开的数字。从 STATION 查询北纬度 (LAT_N) 的中位数,并将结果四舍五入到小数位。
输入格式
STATION表描述如下:
Field : Type
ID : NUMBER
CITY : VARCHAR2(21)
STATE : VARCHAR2(2)
LAT_N : NUMBER
LONG_W: NUMBER
Run Code Online (Sandbox Code Playgroud)
其中 LAT_N 是北纬,LONG_W 是西经。
我只能设法获取中值的行索引
select floor((count(lat_n)+1)/2) from station;
Run Code Online (Sandbox Code Playgroud)
即行索引 250。下一步是使用该值提取行索引 250 处的 lat_n 值。如何转换为 SQL?
对于 mySQL这将起作用,
SELECT ROUND(S1.LAT_N, 4)
FROM STATION AS S1
WHERE (SELECT ROUND(COUNT(S1.ID)/2) - 1
FROM STATION) =
(SELECT COUNT(S2.ID)
FROM STATION AS S2
WHERE S2.LAT_N > S1.LAT_N);
Run Code Online (Sandbox Code Playgroud)
参考: https: //nikkesan.gitbook.io/hackerrank/practice-1/sql/aggregation/untitled-2
小智 6
您可以使用 Oracle 运行以下代码。
SELECT ROUND(MEDIAN(LAT_N), 4)
FROM STATION;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
50537 次 |
| 最近记录: |