使用 SQL 的百分位数

2023-12-28

我的数据集中有 3 列:

  1. Monetary
  2. Recency
  3. 频率

我想使用 SQL 创建另外 3 个列,例如 M_P、R_Q、F_Q,其中包含货币、新近度和频率每个值的百分位值。

先感谢您。

Customer_ID    Frequency Recency    Monetary    R_Q     F_Q        M_Q
112                 1      39          7.05      0.398   0.789    0.85873
143                 1      23          0.1833    0.232  0.7895   0.1501
164                 1      52          0.416      0.508   0.789  0.295
123                 1      118          1.1        0.98   0.789  0.52

您要找的函数是ANSI标准函数ntile():

select t.*,
       ntile(100) over (order by monetary) as percentile_monetary,
       ntile(100) over (order by recency) as percentile_recency,
       ntile(100) over (order by frequency) as percentile_frequency
from t;

这在大多数数据库中都是可用的。

您可以使用以下方法计算百分位数rank() and count()。根据您想要处理关系的方式以及您想要 1-100 还是 0-100 之间的值,以下应该是一个很好的起点:

select t.*,
       (1 + rank_monetary * 100.0 / cnt) as percentile_monetary,
       (1 + rank_recency * 100.0 / cnt) as percentile_recency,
       (1 + rank_frequency * 100.0 / cnt) as percentile_frequency
from (select t.*,
             count(*) over () as cnt,
             rank() over (order by monetary) - 1 as rank_monetary,
             rank() over (order by recency) - 1 as rank_recency,
             rank() over (order by frequency) - 1 as rank_frequency
      from t
     ) t;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 SQL 的百分位数 的相关文章

  • 索引数量越少意味着插入、更新和删除速度更快? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 优化 SQL Server 上的删除

    Deletesql server 上的有时很慢 我经常需要优化它们以减少所需的时间 我一直在谷歌上搜索一些关于如何做到这一点的提示 并且我发现了各种各样的建议 我想知道你最喜欢和最有效的驯服删除野兽的技术 以及它们如何以及为什么起作用 到目
  • 如何找到多个列中的最小值

    我在我的 DB 3 col 中有一个值 我想在所有这些值中找到一个值 如下所述 表名 MyTable id col1 col2 col3 1 200 300 400 2 100 150 300 3 800 102 20 4 80 80 0
  • 删除连接到另一表 SQL 的一个表中的记录

    我有两个表 一个包含 212 000 条记录 已弃用的记录 另一个包含 10 500 000 条记录 我想在 id 和 version number 字段上连接两个表 因为两个表都有这些字段 我希望从连接表中删除匹配的记录 来自连接表 即从
  • 将 .MDF SQL Server 数据库与 ASP.NET 结合使用与使用 SQL Server

    我目前正在 ASP NET MVC 中编写一个网站 我的数据库 其中还没有任何数据 只有正确的表 使用 SQL Server 2008 我已将其安装在我的开发计算机上 我使用服务器资源管理器从应用程序连接到数据库 然后使用 LINQ to
  • 只获取倒数第二条记录 - mysql-query

    我有一个如下表记录 my table id rating description 1 0 0 bed 2 1 0 good 3 0 0 bed 4 1 0 good 5 0 0 bed 6 0 0 bed 7 0 0 bed 现在我通过评级
  • 需要按天分割日期时间范围

    我有一个需要根据日期时间拆分的表 输入表 ID Start End A 2019 03 04 23 18 04 2019 03 04 23 21 25 A 2019 03 04 23 45 05 2019 03 05 00 15 14 所需
  • SQL 查询用于计算每个客户的订单数量和总金额

    我有两张桌子Order与列 OrderID OrderDate CID EmployeeID And OrderItem与列 OrderID ItemID Quantity SalePrice 我需要返回客户 ID CID 每个客户的订单数
  • Postgresql 一张表的多个计数

    我想从表中的两列中获得这些列中值的统一计数 例如 两列是 表 报告 type place one home two school three work four cafe five friends six mall one work one
  • Oracle:如何获取刚刚插入的行的序列号?

    如何获取刚刚插入的行的序列号 插入 返回 declare s2 number begin insert into seqtest2 x values aaa returning seq into s2 dbms output put lin
  • 如何通过子 POJO 的属性过滤复合 ManyToMany POJO?

    我有两个像这样的房间实体 Entity public class Teacher implements Serializable PrimaryKey autoGenerate true public int id ColumnInfo n
  • 实现软删除的最佳方法是什么?

    目前在做一个项目 我们要对大部分用户 用户角色 实现软删除 我们决定添加一个is deleted 0 数据库中每个表的字段并将其设置为 1 如果特定用户角色点击特定记录上的删除按钮 现在为了将来的维护 每个SELECT查询需要确保它们不包含
  • JDBC插入实数数组

    我试图将一个真实的数组插入到 postgresql 数组中 该表的定义是 String sqlTable CREATE TABLE IF NOT EXISTS ccmBlock sampleId INTEGER block REAL 插入内
  • 在 SQL Server 上执行分页的最佳方式是什么?

    我有一个数据库超过200万记录 我需要执行分页以在我的 Web 应用程序上显示 该应用程序每页必须有 10 条记录DataGrid 我已经尝试使用ROW NUMBER 但是这种方式会选择所有 200 万条记录 然后只得到 10 条记录 我也
  • H2 用户定义的聚合函数 ListAgg 不能在第一个参数上使用 DISTINCT 或 TRIM()

    所以我有一个 DB2 生产数据库 我需要在其中使用可用的函数 ListAgg 我希望使用 H2 的单元测试能够正确测试此功能 不幸的是H2不直接支持ListAgg 但是 我可以创建一个用户定义的聚合函数 import java sql Co
  • 删除数据库中的行后如何重新排序ID

    我正在使用 C 来制作具有 sql 数据库的程序 在数据库中我有一个名为Workers 它有一个自动增量和主键ID column 当我删除一条记录时 ID 之间会出现间隙 删除记录后如何重新排序 ID UPDATE 我要做的就是找到记录后将
  • SELECT max(x) 返回 null;我怎样才能让它返回0?

    运行以下命令时如何返回 0 而不是 null SELECT MAX X AS MaxX FROM tbl WHERE XID 1 假设没有XID 1的行 or SELECT coalesce MAX X 0 AS MaxX FROM tbl
  • 日期语句之间的 JPQL SELECT [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我想将此 SQL 语句转换为等效的 JPQL SELECT FROM events WHERE events date BETWE
  • 如何在 SQL Server 中连接

    我的数据库没有特定的列 因此我通过开关在查询中创建了一个列 我需要的是将此列与数据库中的另一列连接起来 select certificateDuration DurationType case when certificateDuratio
  • 如何获取自定义订单的结果? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 代替ASC or DESC 我希望我的查询结果采用特定的自定义顺序 例如 如果我想要的结果不是 A B C D 而是 P A L H 该怎么

随机推荐

  • ucfirst 不适用于非英语字符[重复]

    这个问题在这里已经有答案了 我正在尝试将字符串中的第一个字母设为大写 它适用于英文字母 但不幸的是 它不适用于非英文字符 例如 echo ucfirst a la 使 ucfirst 对所有单词 包括非英语字符 正常工作的正确方法是什么 对
  • 使用 LLVM 按参数传递结构

    是否可以通过参数传递结构 它与 C abi 兼容吗 edit 基本上 我希望有一个包含两个成员的 C POD 该结构将是一个胖指针 带有一个指针和一个整数 并且能够在调用指令中将此结构作为函数参数传递 即使在调用 C代码 我现在没有使用胖指
  • 是否可以将钱从 PayPal 帐户转入银行帐户或信用卡?

    我正在使用未来的贝宝付款方式进行付款 我想使用 PayPal 访问令牌将钱从 PayPal 帐户转移到银行或信用卡 但我找不到任何正确的方法来做到这一点 有什么方法可以吗 没有可用于以编程方式自动执行此操作的 API 但您可以从 PayPa
  • 使用雪花连接器获取数据会引发 EmptyPyArrowIterator 错误

    我在 python 脚本 plotly dash 应用程序 中使用 python Snowflake 连接器 今天 在我不更改代码的情况下 该应用程序停止工作 我尝试了一些方法来找出可能出现的问题 我什至尝试运行示例代码雪花文档 https
  • 未捕获的 ReferenceError:进程未定义/第 0 行:解析错误

    For a simple Create React App https create react app dev project I run npm install Then npm start opens the default web
  • MongoDB - 使用嵌套字典查找条目

    我有一个与 python 一起使用的 MongoDB 我的条目如下所示 a something b something c d something e something f something 我想查询具有特定 d 和 e 值的条目 但我
  • 无锁竞技场分配器实现 - 正确吗?

    对于一个简单的指针增量分配器 它们有正式名称吗 我正在寻找一种无锁算法 这看起来微不足道 但我想得到一些反馈 看看我的实现是否正确 非线程安全实现 byte head current head of remaining buffer byt
  • Java全对算法

    给定一个整数集合 有什么 Java 算法可以给出所有的项对 如下所示 给定示例集合 1 3 5 我们想要输出 1 1 3 3 5 5 1 3 1 5 3 5 请注意 顺序并不重要 因此我们需要 1 3 3 1 之一 但不能同时两者 这应该适
  • 检测 Windows Phone 7 是否连接到桌面 Zune 软件

    我已经在 Windows Phone 7 应用程序上工作了几个月 并且拥有一组有用的检测标志 这些标志用于测试代码是否在模拟器中 后台 前台线程上或在设计时间 看完整列表在这里 http silverlightzxing codeplex
  • (html) phpmyadmin 中文本字段的所见即所得编辑器

    我正在制作一个小型网站 我需要谁接手来添加一些内容 存储在三个表中 到 2013 年 9 月最多将有 500 条记录 小东西 现在我正在使用 phpmyadmin 但添加文本 其中一个表格是一个迷你博客 需要基本的 html 技能 我确信
  • Python文件缓存

    我正在从文件创建一些对象 来自模板 xsd 文件的验证器 以将其他 xsd 文件组合在一起 并且我想在磁盘上的文件发生更改时重新创建对象 我可以创建类似的东西 def getobj fname cache try obj lastloade
  • L2 取指未命中率远高于 L1 取指未命中率

    我正在生成一个综合 C 基准测试 旨在通过以下 Python 脚本导致大量指令获取丢失 usr bin env python import tempfile import random import sys if name main fun
  • Azure 函数-System.Net.Http

    我遇到了很多麻烦System Net Http使用 Azure Functions 时的库 如果我在门户中创建一个全新的 httptrigger 函数 它就可以正常工作 不过 我想用我自己的预编译汇编 https github com Az
  • 如何在 AngularJS 中使用 JSON 数组?

    我在这里想做的是 我想使用使用 Spring Restful WebService 生成的 JSON 如下所示 userid 1 firstName kevin lastName buruk email email protected cd
  • 将电子邮件作为服务发送给他人时是否应该使用 Reply-To 标头?

    假设我们有一个充当中间人的应用程序 允许 A 公司向其客户发送报告 A公司 B公司 我 A公司的客户 收到报告后 我们会向收件人发送电子邮件通知 但它们必须来自我们公司的通知电子邮件地址 例如 电子邮件受保护 cdn cgi l email
  • 内部异常:java.sql.SQLException:无效状态,Connection 对象已关闭

    我有一个使用 Eclipse Persistence Services 2 1 1 v20100817 r8050 的 JSF 应用程序 有时会收到以下错误 Exception EclipseLink 4002 Eclipse Persis
  • 如果我在 IntelliJ 中创建一个简单的客户端服务器应用程序,它应该如何工作?

    创建客户端服务器应用程序 serversocket 时 我会创建 2 个单独的项目还是可以在单个项目中执行此操作 我对这将是什么类型的项目感到有点困惑 并且对如何启动客户端和服务器感到更加困惑 或者我必须手动启动终端并执行罐子 这将是一个服
  • Python 在 Android 上有哪些限制?

    我正准备开始一点 Android 开发 需要选择一种语言 我了解 Python 但必须学习 Java 我想了解那些在 Android 上使用 Python 的人有哪些限制 另外 与 Java 相比有什么好处吗 Andrew 提到的大部分观点
  • Android 使用捆绑包从一个活动发送数据到另一个活动

    我必须活动AnswerQuestion java and SendAnswerToServer java 我想将数据从第一个活动发送到另一个活动 在 AnswerQuestion 活动中我这样写 Bundle basket new Bund
  • 使用 SQL 的百分位数

    我的数据集中有 3 列 Monetary Recency 频率 我想使用 SQL 创建另外 3 个列 例如 M P R Q F Q 其中包含货币 新近度和频率每个值的百分位值 先感谢您 Customer ID Frequency Recen