使用 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 的百分位数 的相关文章

  • MySQL 正在将我的时间戳值转换为 0000-00-00

    我是 PHP 新手 目前仍在学习中 我认为我的注册表有问题 username password email全部成功插入MySQL registered and last seen不要 我以为我正在使用getTimestamp 错了 但它呼应
  • Oracle SQL-根据记录的日期与历史记录标记记录

    这是我在论坛上的第一篇文章 通常我能够找到我需要的东西 但说实话 我不太确定如何针对该问题提出正确的问题 因此 如果论坛上已经有答案而我错过了 请接受我的歉意 我通过 Benthic Software 在 Oracle 数据库中运行以下代码
  • 使用“AND”表达式构建动态 SQL,而不混淆嵌套条件?

    总的来说 我对 php 和编码相当陌生 我有一系列条件需要测试它们是否已设置 它们是 option1 option2 option3 if isset option1 if isset option2 if isset option3 qu
  • Entity Framework 6 多对多想要插入重复行

    不应该这么难 我准备放弃EF了 我的模型有周刊版本 每个版本可以有许多分类广告 每个分类可以出现在一个或多个版本中 我的模型 public class Classifieds Key DatabaseGenerated DatabaseGe
  • Allen Browne 的 ConcatRelated() 错误 3061:参数太少

    我正在尝试创建给定仓库的产品列表 Allen Browne 的 ConcatRelated 函数似乎是在链接变量相同时创建列表的经过验证的正确方法 但我无法让它工作 我已将我的信息分解为单个查询 qry Products SELECT qr
  • SQL Server 每年的第一个星期一

    如何使用 T SQL 查找 一年中的第一个星期一 这是 ngruson 发布的链接中的示例 http sqlbump blogspot nl 2010 01 first monday of year html http sqlbump bl
  • 如何为“%abc%”搜索创建文本索引?

    我想对查询进行索引x like abc 如果我有一个如下表 create table t data varchar 100 我想创建一个索引以便能够有效地执行以下操作 select from t where contains abc 和这个
  • 无法访问 Big Query 中类型为 ARRAY> 的字段

    我正在尝试在 BigQuery 上使用标准 SQL 方言 即不是旧版 SQL 运行查询 我的查询是 SELECT date hits referer FROM refresh ga sessions xxxxxx LIMIT 1000 但不
  • 如何调试参数化 SQL 查询

    我使用 C 连接到数据库 然后使用 Ad hoc SQL 来获取数据 这个简单的 SQL 查询非常方便调试 因为我可以记录 SQL 查询字符串 如果我使用参数化 SQL 查询命令 有没有办法记录 sql 查询字符串以进行调试 我想就是这样的
  • PostgreSQL 窗口函数:row_number() over(按 col2 分区 col 顺序)

    以下结果集源自具有一些连接和联合的 SQL 查询 SQL 查询已经对 Date 和 game 上的行进行了分组 我需要一列来描述按日期列分区的游戏的尝试次数 Username Game ID Date johndoe1 Game 1 100
  • 如何插入包含“&”的字符串

    如何编写包含 字符的插入语句 例如 如果我想将 J J Construction 插入数据库的列中 我不确定这是否有什么不同 但我正在使用 Oracle 9i 我总是忘记这一点 然后又回到它 我认为最好的答案是迄今为止提供的答复的组合 首先
  • 获取从开始日期到结束日期的活跃周数

    我的订阅数据如下所示 数据显示用户何时购买订阅 它有user id subscription id start date and end date 我已经得出wk start and wk end从中 user subscription i
  • 在 SQL 中如何获得整数的最大值?

    我试图从 MySQL 数据库中找出整数 有符号或无符号 的最大值 有没有办法从数据库本身提取这些信息 是否有我可以使用的内置常量或函数 标准 SQL 或 MySQL 特定的 At http dev mysql com doc refman
  • 如何获取Postgres当前的可用磁盘空间?

    在开始在数据库中进行某些工作之前 我需要确保至少有 1Gb 的可用磁盘空间 我正在寻找这样的东西 select pg get free disk space 是否可以 我在文档中没有找到任何相关内容 PG 9 3 操作系统 Linux Wi
  • value >= all(select v2 ...) 产生与 value = (select max(v2) ...) 不同的结果

    Here https stackoverflow com questions 17026651 query from union of joins 17027784 noredirect 1 comment24611997 17027784
  • SQL Server - SQL 替换整个数据库中所有表中的所有列

    这是一个很遥远的事情 我猜这个问题没有简单的答案 但是 我继承了一个数据库 其中填充了一些可怕的数据 许多包含描述的行都有回车符 这意味着当我们 BCP 输出数据时 它会带有回车符 我的问题 有没有办法在 MS SQL Server 中对整
  • pyspark.sql.utils.AnalysisException:u'Path不存在

    我正在使用标准 hdfs 与 amazon emr 运行 Spark 作业 而不是 S3 来存储我的文件 我在 hdfs user hive warehouse 有一个配置单元表 但当我的 Spark 作业运行时找不到它 我配置了 Spar
  • INTEGER 到 DATETIME 的转换与 VB6 不同

    我正在查看一些遗留的 VB6 代码 比我的时代早很多年 它对 SQL 2005 数据库运行查询 它提供了日期限制WHERE子句 其中日期作为整数值给出CLng VB6 中的日期 e g WHERE SomeDateField gt 4006
  • 如何在sql server 2008R2中将单个单元格拆分为多个列?

    我想将每个名称拆分为各个列 create table split test value integer Allnames varchar 40 insert into split test values 1 Vinoth Kumar Raj
  • Postgres 按查询分组

    我正在尝试在 postgres 的查询中使用 group by 我无法让它按照我想要的方式工作 以便根据需要对结果进行分组 这是另一个堆栈问题的扩展我刚刚回答过的递归查询 https stackoverflow com questions

随机推荐

  • 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