选择带有“over partition by”的案例

2024-01-19

正确的语法是什么,或者是否可以在 select 中使用 case 并在其中进行分区? (使用SQL Server 2012)

a = unique id
b = a string'xf%'
c = values
d = values 
e = values



select 
    case 
    when b like 'xf%' then
    (sum(c*e)/100*3423 over (partition by a))end as sumProduct
from #myTable

这是我需要解决的问题,这是我遇到的问题的一部分 之前sql中的sumProduct https://stackoverflow.com/questions/32522130/sumproduct-in-sql

edit:根据要求添加一些示例数据和预期结果 创建表 #testing (b varchar (20), a date, c int, e int)

     b           a           c         e       sumProduct (expected)
    xf1m    2015.03.02       1         3       (1*3 + 2*5 + 4*2 +3*6)*100/3423
    xf3m    2015.03.02       2         5       (1*3 + 2*5 + 4*2 +3*6)/100*3423
    xf5y    2015.03.02       4         2       (1*3 + 2*5 + 4*2 +3*6)/100*3423
    xf10y   2015.03.02       3         6       (1*3 + 2*5 + 4*2 +3*6)/100*3423
    adfe    2015.03.02       2         5    ---this is skipped because is not xf%
    xf1m    2013.02.01       7         2        (7*2 + 1*8 + 10*1)/100*3423
    xf15y   2013.02.01       1         8        (7*2 + 1*8 + 10*1)/100*3423
    xf20y   2013.02.01       10        1        (7*2 + 1*8 + 10*1)/100*3423

我看到问题是这样的:即使不符合标准,内容也会被添加。在我的小提琴中,您可以看到 sumProduct 的结果是 49 而不是 39,因为正在添加来自 adfe 的 2*5。对此我能做什么?

create table #testing (b varchar (20), a date, c int, e int)

insert into #testing (b,a,c,e)
values
('xf1m','2015-03-02','1','3'),
('xf3m','2015-03-02','2','5'),
('xf5y','2015-03-02','4','2'),
('xf10y','2015-03-02','3','6'),
('adfe','2015-03-02','2','5'),
('xf1m','2013-02-01','7','2'),
('xf15y','2013-02-01','1','8'),
('xf20y','2013-02-01','10','1')

编辑:找到解决方案,将其写为下面的答案


不能随意添加表达式within the Aggregate() OVER (PARTITION clause)表达式 - 因此将额外的计算移到外面:

select 
    case 
    when b like 'xf%' then
    (sum(c*e) over (partition by a))/100*3423 end as sumProduct
from #myTable
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

选择带有“over partition by”的案例 的相关文章

  • 如何查找 PostgreSQL 数据库的上次更新时间?

    我正在使用一个批量更新的 postgreSQL 数据库 我需要知道数据库 或数据库中的表 上次更新或修改的时间 两者都可以 我看到 postgreSQL 论坛上有人建议使用日志记录并查询日志 这对我不起作用 因为我无法控制客户端代码库 你可
  • 插入多行并返回主键时 Sqlalchemy 的奇怪行为

    插入多行并返回主键时 我注意到一些奇怪的事情 如果我在 isert 查询中添加使用参数值 我会得到预期的行为 但是当将值传递给游标时 不会返回任何内容 这可能是一个错误还是我误解了什么 我的sqlachemy版本是0 9 4 下面如何重现错
  • 将大量实体插入 SQL Server 2012 [重复]

    这个问题在这里已经有答案了 我正在进行一个使用 Entity Framework 5 和 SQL Server 2012 的项目 我们需要一次插入大量行 100k 个实体的顺序 基本上 我们有一个物理程序 它输出大量二进制数据 然后我们需要
  • 限制 SQL Server 连接到特定 IP 地址

    我想将 SQL Server 实例的连接限制为特定 IP 地址 我想阻止来自除特定列表之外的任何 IP 地址的任何连接 这是可以在 SQL Server 实例或数据库中配置的东西吗 听起来像是你会使用Windows防火墙 http tech
  • TOAD 将 &String 视为绑定变量

    我正在使用 Oracle Data Integrator 开发一些 ETL 有时会使用 TOAD 测试部分代码 今天我遇到了 TOAD 的问题 我有一行像 AND column value like DEV PROD 当我尝试运行包含上面过
  • Oracle 中的 SQL 调优 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有任何文章 链接可以让我找到 SQL 调优 Oracle 的示例 如果能用例子来解释那就太好了 我需
  • 如何使用 DateTime 执行 SQL NOT NULL?

    一个人如何处理DateTime with a NOT NULL 我想做这样的事情 SELECT FROM someTable WHERE thisDateTime IS NOT NULL But how 嗯 它有效吗 我刚刚测试过 Obje
  • 根据表sql中的行替换字符串中的字符

    我需要用一些映射的字符替换字符串中的字符列表 我有一个表 dbo CharacterMappings 有 2 列 CharacterToFilter 和 ReplacementCharacter 假设这个表中有3条记录 Filter Rep
  • 如何使用 MySQL 的 LOAD DATA LOCAL INFILE 在导入 CSV 时将字符串日期更改为 MySQL 日期格式

    我正在使用 MySQL 的 LOAD DATA LOCAL INFILE SQL 语句将数据从 CSV 文件加载到现有数据库表中 下面是一个 SQL 语句示例 LOAD DATA LOCAL INFILE file csv INTO TAB
  • 使用两个日期之间的随机日期时间更新每一行

    我有一个专栏叫date created我希望每一行保存一个随机日期 日期距当前时间为 2 天 我正在运行以下查询 但它会更新具有相同随机日期的所有行 我希望每一行都是随机的并且不相同 update table set date create
  • PHP 绑定“bigint”数据类型(MySQLi 准备好的语句)

    studentId 57004542323382 companyOfferId 7 sql INSERT INTO studentPlacement companyOfferId studentId VALUES if stmt db gt
  • 复选框上的数据绑定

    我目前正在将数据从 SQL 数据库之一提取到我的应用程序中 我可以让它适用于我的文本框和其他项目 但是 我似乎无法让它适用于复选框 这是我正在使用的代码 DataTable dt new DataTable dt using SqlConn
  • 如何使用PostGIS将多边形数据转换为线段

    我在 PostgreSQL PostGIS 中有一个多边形数据表 现在我需要将此多边形数据转换为其相应的线段 谁能告诉我如何使用 PostGIS 查询进行转换 提前致谢 一般来说 将多边形转换为线可能并不简单 因为没有一对一的映射 http
  • 如何在 Visual Studio 中更改 Azure 数据库表的列顺序

    我整个下午都在寻找在 MS Visual Studio 2022 中重新排序 Azure 数据库表列的方法 没有运气 在其他应用程序中 可以通过拖动或剪切和粘贴轻松重新排列列 这里无能为力 此时 我什至不确定可以在 VS 中移动列 我只对
  • Kerberos 双跳

    我们遇到了臭名昭著的 Kerberos 双跳问题 这是一个全新的域 是从以前使用模拟和委派的另一个提供商迁移而来的 我们已将操作系统升级到最新的 SQL 服务器 2017 WPF 应用程序 使用域凭据 gt Web 服务 IIS 10 上的
  • 列中差异的数量

    我想检索一列每行中有多少个字母的差异 例如 如果您有一个值 test 而另一行有一个值 testing 则 test 和 testing 之间的差异为 4 个字母 该列的数据值为 4 I have reflected about it an
  • 如何在存储过程中实现 sql 搜索功能 (Sql Server 2008)

    我需要编写一个存储过程 该过程将使用 sql server 2008 根据可选参数搜索表 将会有两种模式 基本搜索模式 我们只传递一些文本 高级搜索模式 使用可选参数而不使用 SearchText 为了进行测试 我使用 AdventureW
  • 了解 SSMS 2008 中关系的更新和删除规则

    当我们定义外键约束时 我对 SQL Server 2008 Management Studio 中的更新和删除规则的含义感到困惑 我也没有找到相关的帮助文档 例如F1帮助 这是屏幕快照 如果有人能描述它们的含义并推荐一些相关文档来阅读 我将
  • 当所有维度值都具有 100% 重要性时处理多对多维度

    我至少会尽力保持简洁 假设我们正在跟踪一段时间内的账户余额 所以我们的事实表将包含诸如 账户余额情况表 FK 账户ID FK 日期ID Balance 显然你有一个账户维度表 and a 日期维度表 所以现在我们可以轻松地过滤帐户或日期 或
  • Spark.read 在 Databricks 中给出 KrbException

    我正在尝试从 databricks 笔记本连接到 SQL 数据库 以下是我的代码 jdbcDF spark read format com microsoft sqlserver jdbc spark option url jdbc sql

随机推荐

  • Excel 宏冻结 Outlook

    我有一个相当重的 Excel 宏 当它运行时 Outlook 冻结 我知道它没有使用所有的 CPU 功率 因为a 我有一台强大的多核机器b 我的所有其他程序 甚至是重型程序 都运行良好 Outlook 和 Excel 似乎正在共享 Exce
  • 在下拉菜单中显示 SQL 数据库中的数据

    我有一个存储名称的数据库 我的数据库查询正在运行 但假设我有 5 个名称想要在下拉菜单中显示 如何使下拉菜单中的默认文本显示这 5 个名称 基本上我想要完成的是 查询我的数据库并将所有客户名称存储到一个变量中 假设数据库中有 5 个名字 我
  • 自动安装 IIS 7 及更高版本的 Powershell 脚本

    我是 powershell 的新手 我需要的是一个 powershell 脚本 可以自动安装 IIS7 或更高版本的过程 我需要对角色服务进行某些配置 任何在这方面的帮助都是值得赞赏的 我发现以下博客很有用 通过使用帮助进行了某些更改 我能
  • C++ for 循环优化问题

    我在 VC 中有以下代码 for int i a 1 b i lt a b i lt someObject gt someFunction i 据我所知 编译器优化了所有这些算术运算 并且它们不会在每个循环上执行 但我不确定它们是否可以告诉
  • 如何在多用户环境中处理表单编辑?

    我的应用程序是带有服务器和客户端的多用户应用程序 在这种形式中 多个用户可以同时访问 他们可以执行保存为草稿或提交操作 问题是我想控制多用户同时编辑表单 例如 用户 X 正在编辑文本字段 复选框的值并执行另存为草稿 同时用户 Y 编辑相同的
  • 自动创建用于 xml 反序列化的 C# 类不起作用

    我正在努力为此 xml 创建反序列化类
  • Elastic Search Kibana PDF 报告

    我正在尝试生成 PDF 报告并使用脚本下载它们 我按照以下说明进行操作 https github com elastic kibana blob master docs user reporting automating report Ge
  • 将全名向量拆分为 2 个独立向量的有效方法

    我有一个由全名组成的向量 名字和姓氏用逗号分隔 这就是前几个元素的样子 gt head val vec 1 Aabye Edgar Aaltonen Arvo Aaltonen Paavo 4 Aalvik Grimsb Kari Aamo
  • SQL SERVER:获取两个日期之间的总天数

    我正在尝试获取两天之间的总天数 1 1 2011 3 1 2011 RETURN 62 可以在 SQL Server 中实现吗 PRINT DATEDIFF DAY 1 1 2011 3 1 2011 会给你你所追求的 这给出了两个日期之间
  • 如何使用 API V2 Moz HTTP 请求

    我正在尝试使用 HTTP 请求通过文件获取内容功能连接到 Moz API V2 但我是新使用这个 你们能帮助我吗 他们的文档中的 HTTP 请求示例 POST v2 url metrics Host lsapi seomoz com Con
  • Java Collections 在使用 Collections.addAll() 时何时抛出 NullPointerException

    在什么条件下会出现Collections addAll 方法抛出一个NullPointerException 官方文档提到 NullPointerException 如果指定的集合包含 null 元素并且此集合不允许 null 元素 或者如
  • 是否有免费的虚拟智能卡可供我用来运行一些测试?

    我想这没有什么区别 但我会尝试使用 Java 应用程序来访问它 更新 我将在公钥 私钥加密系统中使用智能卡 智能卡有不同类型 您没有明确说明您指的是哪种测试 但我猜您正在谈论加密智能卡 JavaCard 开发套件包含一个参考 JCRE 可用
  • libGDX Google Play 游戏服务 - Android

    我正在尝试将 Google play 游戏服务实施到 libGDX 项目中 在我的 android 项目中 MainActivity 如下所示 public class MainActivity extends AndroidApplica
  • 如何将有空间的目录路径传递给Windows shell?

    我正在使用 IEcapt exe 来捕获网站快照 问题是 它无法处理有空间的路径目录 像这样 c program files 有什么方法可以传递这样的目录以使其工作吗 通常只需双引号 Windows 路径即可工作 IEcapt exe C
  • 正则表达式在 String.matches() 中不起作用

    我有一小段代码 String words apf hum dkoe 12f for String s words if s matches a z System out println s 应该打印 dkoe 但它什么也没打印 欢迎来到 J
  • 打开第3层,map.on('moveend',..):区分用户交互和map.setCenter()调用

    我正在为 GIS 应用程序实现 OL 并希望在用户滚动地图时添加 20 秒的超时 之后 GPS 自动跟踪功能应恢复 为此 我正在利用 map on moveend move func 侦听器 问题是它无法区分用户滚动还是位置更改来自map
  • 根据视口大小销毁并初始化 Owl Carousel 2

    我读过很多有关此问题的讨论 但没有一个为我解决这个问题 我正在使用 enquire js 来执行我的视口条件 我的代码如下 var slider home farms slider sliderOptions items 1 animate
  • MPI - Bsend 用法

    当我想在异步发送之后释放资源时 MPI Bsend 好吗 这会吗 MPI Bsend array 0 delete array 阻止我删除我想要发送的内存 问题是 当适当的recv打开时 数组可能已经被删除 UPD void RectMPI
  • 在 .NET 对象上设置“可为空”属性

    我有一些 NET 互操作代码 我在其中设法加载对象并读取属性 但是在设置对象的属性时遇到问题 以下是 Delphi 代码的相关部分 uses mscorlib TLB Winapi ActiveX type Irrelevant parts
  • 选择带有“over partition by”的案例

    正确的语法是什么 或者是否可以在 select 中使用 case 并在其中进行分区 使用SQL Server 2012 a unique id b a string xf c values d values e values select