【SQL每日一练】获取北纬度(LAT_N)的中位数


前言

从 STATION 查询北纬度 (LAT_N) 的中位数,并将您的答案四舍五入到小数点后4位.
中位数的定义是:如果数据量是奇数,则中位数是排序后位于中间的数;如果数据量是偶数,则中位数是排序后中间两个数的平均值。
STATION表说明如下:
在这里插入图片描述


一、题析

以MySQL为例:
给每一行加一列行号

@rownum:=@rownum+1 as `row_number`

判断奇偶数的情况

1、获取总数:

SELECT count(*) as total_rows
  FROM station d

如果是奇数:(总行数+1)/2;偶数:总行数/2 和 总行数/2 +1
进行合并:

floor((total_rows+1)/2), floor((total_rows+2)/2) )

四舍五入到四位小数:

truncate(AVG(LAT_N),4)

二、题解

1.mysql

代码如下:

select truncate((SELECT avg(t1.LAT_N) as median_val FROM (
SELECT @rownum:=@rownum+1 as `row_number`, d.LAT_N
  FROM station d,  (SELECT @rownum:=0) r
  ORDER BY d.LAT_N
) as t1, 
(
  SELECT count(*) as total_rows
  FROM station d
) as t2
WHERE  t1.row_number in ( floor((total_rows+1)/2), floor((total_rows+2)/2) )),4);

2.sqlserver

SELECT CAST( AVG(LAT_N) AS NUMERIC(20,4))
FROM
(
   SELECT LAT_N, 
      ra = ROW_NUMBER() OVER (ORDER BY LAT_N, id),
      rd = ROW_NUMBER() OVER (ORDER BY LAT_N DESC, id DESC)
   FROM STATION
) AS x
WHERE ra BETWEEN rd - 1 AND rd + 1

相关推荐

  1. SQL语句每日

    2024-06-14 17:24:01       44 阅读
  2. SQL语句每日

    2024-06-14 17:24:01       45 阅读
  3. SQL语句每日

    2024-06-14 17:24:01       32 阅读
  4. SQL语句每日

    2024-06-14 17:24:01       38 阅读
  5. SQL语句每日十六

    2024-06-14 17:24:01       37 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-14 17:24:01       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-14 17:24:01       106 阅读
  3. 在Django里面运行非项目文件

    2024-06-14 17:24:01       87 阅读
  4. Python语言-面向对象

    2024-06-14 17:24:01       96 阅读

热门阅读

  1. 【Flutter】路由组件的应用 (学习记录)

    2024-06-14 17:24:01       30 阅读
  2. Spring Boot中使用logback出现LOG_PATH_IS_UNDEFINED文件夹

    2024-06-14 17:24:01       33 阅读
  3. 数值类型==和equals别用错

    2024-06-14 17:24:01       41 阅读
  4. Qt QMake指南(如何写pro文件)

    2024-06-14 17:24:01       84 阅读
  5. Rabbit MQ和Kafka的区别

    2024-06-14 17:24:01       30 阅读
  6. Kafka基础架构与核心概念?有哪些应用场景?

    2024-06-14 17:24:01       32 阅读
  7. Kafka之ISR机制的理解

    2024-06-14 17:24:01       29 阅读
  8. 10.GLM

    10.GLM

    2024-06-14 17:24:01      33 阅读
  9. Golang-goroutine互斥锁与读写互斥锁

    2024-06-14 17:24:01       31 阅读
  10. 多商家抽奖管理系统介绍和小程序APP演示

    2024-06-14 17:24:01       35 阅读
  11. Debian常用命令

    2024-06-14 17:24:01       28 阅读
  12. ISO 19115-2:2019 附录C XML 模式实现

    2024-06-14 17:24:01       33 阅读