如何查找分组的 SQL 中位数

2023-11-22

我正在使用 SQL Server 2008

如果我有一个这样的表:

Code   Value
-----------------------
4      240
4      299
4      210
2      NULL
2      3
6      30
6      80
6      10
4      240
2      30

请问如何通过代码列找到中位数 AND 组? 要获得这样的结果集:

Code   Median
-----------------------
4      240
2      16.5
6      30

我真的很喜欢这个中位数解决方案,但不幸的是它不包括分组依据:https://stackoverflow.com/a/2026609/106227


当每个组中有奇数个成员时,使用排名的解决方案效果很好,即样本中存在中位数,如果有偶数个成员,排名方法就会下降,例如

1
2
3
4

这里的中位数是 2.5(即一半组较小,一半组较大),但排名方法将返回 3。为了解决这个问题,您本质上需要从组的下半部分获取顶部值,并且组的上半部分的底部值,并取两个值的平均值。

WITH CTE AS
(   SELECT  Code,
            Value, 
            [half1] = NTILE(2) OVER(PARTITION BY Code ORDER BY Value), 
            [half2] = NTILE(2) OVER(PARTITION BY Code ORDER BY Value DESC)
    FROM    T
    WHERE   Value IS NOT NULL
)
SELECT  Code,
        (MAX(CASE WHEN Half1 = 1 THEN Value END) + 
        MIN(CASE WHEN Half2 = 1 THEN Value END)) / 2.0
FROM    CTE
GROUP BY Code;

SQL Fiddle 示例


在 SQL Server 2012 中您可以使用PERCENTILE_CONT

SELECT  DISTINCT
        Code,
        Median = PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY Value) OVER(PARTITION BY Code)
FROM    T;

SQL Fiddle 示例

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何查找分组的 SQL 中位数 的相关文章

  • 在 SQL Server 2014 中使用带有事务的存储过程的 TransactionScope

    我正在使用 C 和 ADO NetTransactionScope在 ASP Net 应用程序中运行事务 该事务应该在多个表中保存一些数据 然后向订阅者发送电子邮件 Question 是否有效使用TransactionScope 当它包含对
  • 查找SQL记录中的并发用户数

    我有以下结构的表 UserID StartedOn EndedOn 1 2009 7 12T14 01 2009 7 12T15 01 2 2009 7 12T14 30 2009 7 12T14 45 3 2009 7 12T14 47
  • Redis 与 SQL Server 性能对比

    应用程序性能是使用缓存而不是关系数据库的主要原因之一 因为它以键值对的形式将数据存储在内存中 所以我们可以将经常访问的不经常更改的数据存储在缓存中 从缓存中读取比从数据库中读取要快得多 Redis 是分布式缓存市场上最好的解决方案之一 我正
  • 查看tomcat服务器的连接数

    我在 Tomcat Server 5 5 17 上部署了一个 Java Java EE Web 应用程序 我想知道连接到服务器的客户端数量 我们怎样才能找到它呢 最可靠的方法是搜索ip addr of srv port in netstat
  • 有没有办法将应用程序上下文与非 Sybase DB 服务器中的数据库连接进行通信(类似于 Sybase 中的 set_appcontext)?

    Sybase 有一种让应用程序进行通信的方法 上下文 数据 http manuals sybase com onlinebooks group as asg1250e sag Generic BookTextView 38861 hf 0
  • PDO 和 Microsoft SQL:必须声明表变量“@P1”

    我正在尝试使用 PDO 中的绑定从 Microsoft SQL 数据库中选择一些条目 我正在使用的代码看起来与我在文档中找到的代码类似 但是 当我运行它时 我收到以下警告 警告 PDOStatement execute pdostateme
  • SQL Server到Mysql迁移(使用Mysql Workbench)数据传输错误

    我正在使用 Mysql Work bench 6 3 将数据库从 MS Sql server 2008 迁移到 Mysql 在 批量数据传输 期间出错并出现以下警告 这种情况仅发生在像 varchar char 这样的列类型上 当我尝试使用
  • MySQL 多个 IN 条件对同一个表进行子查询

    我有多个带有子查询的 IN 条件 SELECT S name S email FROM something S WHERE 1 NOT IN SELECT id FROM tags WHERE somethingId S id AND 2
  • mysql变量赋值:如何强制赋值顺序?

    由于mysql是一种声明性语言 我找不到强制赋值变量顺序的方法 采取这个查询 SET v1 0 SET v2 0 SELECT v1 v2 FROM MyTable table WHERE v1 v2 is not null AND v2
  • T-SQL 中的不等式测试

    我刚刚在 WHERE 子句中遇到了这个 AND NOT t id id 这与以下内容相比如何 AND t id id Or with AND t id lt gt id 我总是自己写后者 但显然其他人有不同的想法 其中一个的表现会比另一个更
  • 如何编辑表以启用级联删除?

    我有一个代表用户的表 当用户被删除时我得到 DELETE 语句与 REFERENCE 约束冲突 显然 CASCADE DELETE在SQL Server中并不像我想象的那么容易 需要将选项添加到表中 问题是 我不知道如何添加CASCADE
  • 如何从表中选择层次结构中的最低级别

    我有一个具有父 子关系的表 Table A Column Id int Column Parent Id int Column Description text 一组示例数据如下 999 NULL Corp 998 999 Div1 997
  • 使用聚合函数时减少 Athena 扫描的数据量

    以下查询扫描 100 MB 的数据 select from table where column1 val and partition id 20190309 然而 下面的查询扫描了 15 GB 的数据 有超过 90 个分区 select
  • 使用 sql 查询选择最近 30 天

    我正在查找过去 30 天内周一 周二 周三 周四 周五 周六 周日的数量 我可以在没有实际数据库表的情况下选择最近 30 天的日期和星期几吗 就像是 SELECT everything between convert date GETDAT
  • SQL Server:比较两个表中的列

    我最近完成了从某些应用程序的旧版本到当前版本的迁移 在迁移数据库时遇到了一些问题 我需要一个可以帮助我比较两个表中的列的查询 我的意思不是行中的数据 我需要比较列本身来弄清楚我错过了表结构的哪些变化 看一下红门 SQL 比较 http ww
  • 无法在 SSIS 查找中选择 ODBC 源

    我正在创建一个用于更新 SQL Server 中的表的包 要更新的详细信息是从 MySQL 数据库获取的 为此 我使用 ODBC 连接管理器连接到 MySQL 但此 ODBC 连接管理器未在 OLE DB 连接管理器中列出 我可以在 Too
  • 对时间序列数据重新采样

    我有一个以毫秒为单位的时间序列列表 我想对时间序列进行重新采样并对组应用平均值 我如何在 Postgres 中实现它 重新采样 是指聚合一秒或一分钟内的所有时间戳 一秒或一分钟内的所有行形成一组 表结构 date x y z Use dat
  • 简单的t-sql而不是触发器

    任何人都可以帮助解决简单的 t sql 脚本与板载触发器的问题吗 我使用非常简单的触发器将数据从一个表复制到另一个表 这些表之间没有关系 当我尝试在触发器创建后 从同一脚本 直接第一次插入数据时 我得到了所需的结果 但所有接下来的尝试都会失
  • 左连接 SQL 求和

    我有两张桌子想要加入 比如说表 a 和表 b 表 b 有许多行指向表 a 表 b 包含价格 实际上是一个购物篮 所以我想要的是表a中的所有记录和表b中的价格之和 我努力了 select a sum b ach sell from booki
  • SQL Server XQuery 返回错误

    我正在 SQL Server 2012 中对 XML 数据类型列执行查询 数据示例如下

随机推荐

  • 如何加密和解密 PHP 字符串?

    我的意思是 Original String Salt or Key gt Encrypted String Encrypted String Salt or Key gt Decrypted Original String 也许是这样的 h
  • 何时调用 NSURLConnection 委托的release?

    当将委托传递给 a 时NSUrlConnection像这样的对象 NSURLConnection alloc initWithRequest request delegate handler 什么时候应该调用代表的release 应该是在c
  • Oracle执行计划中的访问和过滤谓词

    Oracle执行计划中的Access谓词和Filter谓词有什么区别 如果我理解正确的话 访问 用于确定需要读取哪些数据块 而 过滤 则在读取块后应用 因此 过滤是 邪恶的 在下面执行计划的谓词信息部分的示例中 10 access DOMA
  • '-[__NSDictionaryI length]: 无法识别的选择器发送到实例' - 试图找出原因

    I ve a UITableView与定制UILabel标题和副标题 以使文本右对齐 我的数据来自网络服务 我解析并存储在其中NSArray of NSDictionary 某些标题或副标题可以是 nil 空文本 为此 我将其放入 try
  • 将自定义功能区组添加到 Word 2007 中的现有自定义功能区组

    如何将新组添加到现有 第 3 方 自定义功能区选项卡加载项 我知道我可以通过指定选项卡 idMSo 值来添加到现成的功能区 但如何为自定义功能区选项卡执行此操作 我已经尝试过自定义功能区的 ID 值 但它只是重复功能区 还尝试过传递所需的自
  • 有没有办法检查状态栏的可见性?

    我有一项服务 当某些顶级活动处于 或不 处于全屏模式时 应该定期检查状态栏的可见性 是否可以 最后我发现了如何检查状态栏是否可见 它是某种黑客 但它对我有用 我在我的服务中创建了该方法 private void createHelperWn
  • GetRoomLists 成功但没有返回任何数据

    我正在使用 Exchange Web 服务调用 GetRoomLists 我们正在运行 Exchange 2010 以下代码是通过控制台应用程序执行的 根据 XML 响应 无错误 调用成功 但没有返回任何数据 当您尝试通过 Outlook
  • 在 iOS 设备上本地保存游戏分数...需要安全性吗?

    我是否需要用哈希值存储分数 即保护它不被用户编辑 欺骗 根据我的新手知识 用户无法查看和操作本地存储的数据 例如 plist 文件 谁能详细说明一下吗 编辑 我在本地存储分数并定期将其上传到游戏中心排行榜 即使设备已越狱 我也希望具有安全性
  • 在javascript中为什么使用“var that = this”[重复]

    这个问题在这里已经有答案了 嗨 我是 JavaScript 新手 使用这条线有什么好处 var that this 一个例子 function Person firstname lastname age this firstname fir
  • Mocha 如何知道done 已被指定?

    如果我使用 Mocha 编写异步测试 我需要做的就是在测试函数上指定 did 参数 test foo function done 我的问题是 Mocha 如何知道是否已完成 测试函数的定义应该是这样的 function test title
  • InvalidCastException 尝试从装箱 int 转换为可为 null 的枚举

    我有一个枚举 Foo public enum Foo Alpha Bravo Charlie 如果我尝试从盒装中进行以下转换int to a Foo 我得到一个InvalidCastException var x Foo object 1
  • 性能 iText 与 PdfBox (2014)

    我正在尝试将 pdf 我最喜欢的书 Effective Java 如果重要的话 转换为文本 我检查了 iText 和 Apache PdfBox 我发现性能有很大差异 使用 iText 需要 2 分 521 秒 使用 PdfBox 需要 6
  • 谜题:在一次解析中对一组 0 和 1 进行排序。

    是否可以在一次解析中按降序排列仅由 1 和 0 组成的数组而不使用辅助数组 例如 假设你有一个数组a 1 0 0 0 1 0 1 为此 预期输出将是a 1 1 1 0 0 0 0 我写了下面的 C 代码 但它在两次解析中找到了解决方案 可以
  • C++ 64位int:按引用传递或按值传递

    这是一个关于 64 位整数的效率问题 假设我不需要修改 int 参数的值 我应该通过值还是引用传递它 假设32位机器 1 32位整数 Iguess答案是 按值传递 因为 按引用传递 将产生额外的内存查找开销 2 64位int 如果我通过引用
  • 在R中的字符串中的两个字母之间添加空格[重复]

    这个问题在这里已经有答案了 假设我有一个像这样的字符串 s PleaseAddSpacesBetweenTheseWords 如何在 R 中使用 gsub 在单词之间添加空格 以便我得到 Please Add Spaces Between
  • Android AdRequest 仅返回 onAdFailedToLoad AdRequest.ERROR_CODE_NO_FILL

    我的应用程序已经在 Google Play 商店上架一个月了 一切正常 两天前 我将其添加到 专为家庭设计 类别中 我收到了 Google 团队的接受和祝贺 从那时起 我的插页式广告就不再显示了 我收到AdRequest ERROR COD
  • 更改“选择”突出显示颜色[重复]

    这个问题在这里已经有答案了 我有一个自定义的下拉菜单框 见图 我想更改选项上的突出显示颜色以摆脱可怕的蓝色并将其更改为我选择的颜色 我还想停止周围的蓝色突出显示框整个事情并从选项框中删除边框 我该如何删除其中的任何一个或全部 Thanks
  • 如何使用 Swift 以编程方式更改语言环境

    我正在通过 Swift 在 XCODE 6 3 上制作 ios 应用程序 我的应用程序将具有选择语言功能 如下图所示 我已经有了本地语言的故事板 但我不知道如何通过按钮以编程方式更改应用程序的本地化 任何人都知道该怎么做 下面是使用 Swi
  • RDF图蕴涵

    我刚刚读到了 RDF 资源描述框架 的蕴涵概念 任何人都可以告诉我两个 RDF 图的蕴涵示例并对其进行一些解释 Thanks 假设您有以下内容 ex book1 rdf type ex Publication ex book2 rdf ty
  • 如何查找分组的 SQL 中位数

    我正在使用 SQL Server 2008 如果我有一个这样的表 Code Value 4 240 4 299 4 210 2 NULL 2 3 6 30 6 80 6 10 4 240 2 30 请问如何通过代码列找到中位数 AND 组