广告
返回顶部
首页 > 资讯 > 精选 >SQL怎么计算每个分组的中位数
  • 105
分享到

SQL怎么计算每个分组的中位数

2023-06-03 15:06:40 105人浏览 安东尼
摘要

这篇文章主要为大家分析了sql怎么计算每个分组的中位数的相关知识点,内容详细易懂,操作细节合理,具有一定参考价值。如果感兴趣的话,不妨跟着跟随小编一起来看看,下面跟着小编一起深入学习“SQL怎么计算每个分组的中位数”的知识吧。中位数是指一组

这篇文章主要为大家分析了sql怎么计算每个分组的中位数的相关知识点,内容详细易懂,操作细节合理,具有一定参考价值。如果感兴趣的话,不妨跟着跟随小编一起来看看,下面跟着小编一起深入学习“SQL怎么计算每个分组的中位数”的知识吧。

中位数是指一组数据排序以后,位于中间位置的数据值。如果数据个数是奇数,中位数就是最中间位置那个值;如果是偶数,则是中间位置那两个数的平均值。

怎么查询出数据分组以后每个组的中位数呢?

用SQL来解决这个问题是很有难度的!

SQL的集合是无序的,没有数据位置的概念,需要人为地造出行号,但是要对各分组独立编行号也困难。后来在SQL2003标准中加入了窗口函数,可以对分组编行号了,但是求各组中位数依然繁琐。

举个例子:现有成绩表SCORES数据如下,要求查出每科成绩的中位数。

COURSESCORE
History68.5
History79.0
History82.5
History88.0
History93.5
Maths75.5
Maths83.0
Maths85.0
Maths95.5

查询出来的各科成绩中位数应该是:

COURSESCORE
History82.5
Maths84.0

oracle为例,用SQL写出来是这样:

WITH  A  AS 

       ( SELECT COURSE, SCORE,

              ROW_NUMBER()OVER ( PARTITioN BY COURSE ORDER BY SCORE) AS RN,

              COUNT(*) OVER (PARTITION BY COURSE) AS CNT

       FROM SCORES ),

B  AS

       (SELECT * FROM A WHERE RN>(CNT-0.5)/2 AND RN<(CNT+2.5)/2 )

SELECT COURSE, AVG(SCORE) AS SCORE FROM B

GROUP BY COURSE

ORDER BY COURSE;

这里的A为每组数据加上组内行号并统计每组记录数,B查出位于每组中间位置的记录,最后从B里算出每组平均值,即为中位数。解题步骤比较多,这种SQL不好写。另外还有不用窗口函数的办法,语句就更加复杂了,这里不再列出。

集算器的SPL语言支持组内运算,也提供了中位数函数,解决这个问题就会简单很多,只需1行代码:

connect("mydb").query("select * from scores order by course, score").group(COURSE).new(~.COURSE,~.(SCORE).median():SCORE)

关于“SQL怎么计算每个分组的中位数”就介绍到这了,更多相关内容可以搜索编程网以前的文章,希望能够帮助大家答疑解惑,请多多支持编程网网站!

--结束END--

本文标题: SQL怎么计算每个分组的中位数

本文链接: https://www.lsjlt.com/news/234756.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • SQL怎么计算每个分组的中位数
    这篇文章主要为大家分析了SQL怎么计算每个分组的中位数的相关知识点,内容详细易懂,操作细节合理,具有一定参考价值。如果感兴趣的话,不妨跟着跟随小编一起来看看,下面跟着小编一起深入学习“SQL怎么计算每个分组的中位数”的知识吧。中位数是指一组...
    99+
    2023-06-03
  • SQL怎么查询每个分组都出现的字段值
    今天给大家介绍一下SQL怎么查询每个分组都出现的字段值。文章的内容小编觉得不错,现在给大家分享一下,觉得有需要的朋友可以了解一下,希望对大家有所帮助,下面跟着小编的思路一起来阅读吧。数据分组以后,要找出在每个分组中都出现的某个字段值。用SQ...
    99+
    2023-06-03
  • 按照小时分组-计算每个小时的查询量
    select to_char(query_time, "yyyy/mm/dd hh24") || "点" as query_time ,count(1) as data_num from cpq_resultinfo ...
    99+
    2020-12-21
    按照小时分组-计算每个小时的查询量
  • php怎么将数字的每一位转为数组的一个元素
    本教程操作环境:windows7系统、PHP7.1版,DELL G3电脑php将数字的每一位值转为数组的一个元素我们可以借助字符串和str_split()函数;str_split()可以把字符串分割到数组中,字符串的一个字符对应数组的一个元...
    99+
    2015-06-12
    php 数字 字符串 数组
  • python怎么计算数组元素个数
    Python中,可以使用内置函数`len()`来计算数组的元素个数。以下是一个示例:```pythonarr = [1, 2, 3,...
    99+
    2023-08-22
    python
  • java8怎么实现分组计算数量和计算总数
    本篇内容介绍了“java8怎么实现分组计算数量和计算总数”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!java8分组计算数量和计算总数pac...
    99+
    2023-06-20
  • Python中怎么判断统计每个月的天数
    今天就跟大家聊聊有关Python中怎么判断统计每个月的天数,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。断统计每个月天数源码示例:如下#!/usr/bin/python# ...
    99+
    2023-06-02
  • oracle中怎么取出每个分组的第一条记录
    这篇文章将为大家详细讲解有关oracle中怎么取出每个分组的第一条记录,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。问题1:如何取出每个分组的第一条记录(×××背景)回答...
    99+
    2022-10-18
  • java怎么计算两个时间的分钟数
    可以使用java.time.Duration类来计算两个时间的分钟数。下面是一个示例代码: import java.time.Dur...
    99+
    2023-10-23
    java
  • sql server中怎么使用over()函数实现分组统计
    本篇文章为大家展示了sql server中怎么使用over()函数实现分组统计,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。需求:求出以产品类别为分组,各个分组里价...
    99+
    2022-10-18
  • mysql实现按组区分后获取每组前几名的sql怎么写
    本篇内容介绍了“mysql实现按组区分后获取每组前几名的sql怎么写”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学...
    99+
    2023-03-23
    mysql sql
  • php怎么把数组中每个元素都除以2
    实现步骤:1、使用foreach语句以引用循环的方式遍历数组,语法“foreach ($array as &$value){//循环体语句块;}”;2、在循环体中,利用“/=”运算符将数组元素都除以2即可,语法“$value /= ...
    99+
    2022-08-08
    php php数组
  • JavaScript中怎么计算元素的位置
    这篇文章给大家介绍JavaScript中怎么计算元素的位置,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1、js计算相对于浏览器视窗的元素绝对位置<!DOCTYPE h...
    99+
    2022-10-19
  • Reddit中怎么统计每个帖子的浏览量
    今天就跟大家聊聊有关Reddit中怎么统计每个帖子的浏览量,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。计数机制对于计数系统我们主要有四种需求:帖子...
    99+
    2022-10-18
  • 在 SQL 中计算两个时间戳相隔的天时分秒
    文章目录 秒数分钟小时天数 秒数 两个时间戳之间相减得到的就是秒数。 示例: select unix_timestamp("2022-11-08 14:00:00") - unix_timestamp("2022-11-08...
    99+
    2023-08-24
    hive mysql sql 时间戳
  • php怎么判断数组的值是个位数
    PHP怎么判断数组的值是个位数在使用PHP进行数组操作时,经常会遇到需要对数组中的值进行判断的情况。其中,判断数组的值是否是个位数就是一种常见的需求,本文将详细介绍如何使用PHP来实现这一功能。一、什么是个位数?在数学中,个位数指的是由0~...
    99+
    2023-05-19
  • c++怎么分离整数的各个数位
    在C++中,可以使用取模运算和整除运算来分离整数的各个数位。以下是一个示例代码:```cpp#include int main() ...
    99+
    2023-09-28
    c++
  • c语言怎么统计一个整数的位数
    统计一个整数的位数可以通过以下两种方法实现: 使用循环逐位判断:使用循环遍历整数的每一位,直到整数变为0,每遍历一次,位数加1。具...
    99+
    2023-10-23
    c语言
  • php怎么统计数组中某个元素出现的个数
    可以使用array_count_values()函数来统计数组中某个元素出现的个数。该函数会返回一个关联数组,其中键是数组中的元素,...
    99+
    2023-10-10
    php
  • MySQL中按时间统计每个小时的记录数的示例分析
    这期内容当中小编将会给大家带来有关MySQL中按时间统计每个小时的记录数的示例分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。 抽空在stack overflow转了一...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作