选择带有“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”的案例 的相关文章

随机推荐

  • 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