MySQL显示两个值之差之和

2023-12-03

以下是我的查询。

SELECT n.`name`,n.`customer_id`,m.`msn`, m.kwh,
   m.kwh - LAG(m.kwh) OVER(PARTITION BY n.`customer_id` ORDER BY m.`data_date_time`) AS kwh_diff
FROM mdc_node n
INNER JOIN `mdc_meters_data` m ON n.`customer_id` = m.`cust_id`
WHERE n.`lft` = 5 AND n.`icon` NOT IN ('folder')
AND m.`data_date_time` BETWEEN NOW() - INTERVAL 30 DAY AND NOW()

这给了我下面的结果

enter image description here

我想总结一下kwh_diff并仅显示一行记录而不是多行记录,如下所示

name customer_id msn sum_kwh_diff

Zeeshan 37010114711 4A60193390663 4.5

我尝试过执行以下操作

 SUM(m.kwh - LAG(m.kwh) OVER(PARTITION BY n.`customer_id` ORDER BY m.`data_date_time`)) AS sum_kwh_diff

and got Error Code: 4074 Window functions can not be used as arguments to group functions.


您想要对连续行之间的差异求和。
例如,假设您有该列的这些值kwh:

kwh
---
10
12
14
17
25
32

所以差异是:

kwh_diff
--------
0
12-10
14-12
17-14
25-17
32-25

这些差异的总和等于32-10这是:

最后一个值和第一个值之间的差

所以你需要的是窗口函数FIRST_VALUE()获得这些值:

SELECT DISTINCT n.`name`, n.`customer_id`, m.`msn`, 
   FIRST_VALUE(m.kwh) OVER (PARTITION BY n.`customer_id` ORDER BY m.`data_date_time` DESC) -
   FIRST_VALUE(m.kwh) OVER (PARTITION BY n.`customer_id` ORDER BY m.`data_date_time` ASC) AS kwh_diff
FROM mdc_node n
INNER JOIN `mdc_meters_data` m ON n.`customer_id` = m.`cust_id`
WHERE n.`lft` = 5 AND n.`icon` NOT IN ('folder')
AND m.`data_date_time` BETWEEN NOW() - INTERVAL 30 DAY AND NOW()

并且不需要子查询或聚合。

我保留在我的代码中PARTITION BY n.customer_id因为你在代码中使用它,尽管你可能需要PARTITION BY n.customer_id, m.msn.

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

MySQL显示两个值之差之和 的相关文章

  • 随机组合 MySQL 数据库中的两个单词

    我有一个包含名词和形容词的数据库 例如 id type word 1 noun apple 2 noun ball 3 adj clammy 4 noun keyboard 5 adj bloody ect 我想创建一个查询 它将抓取 10
  • Mysql插入表后不显示右单引号(’)

    我有一个名为 测试 的表 我插入了一行 其中包含unicode字符右单引号 0x2019在名称字段中 SQL insert into Testing values Sno Name Address insert into Testing v
  • 如何在 SQL Server 中连接

    我的数据库没有特定的列 因此我通过开关在查询中创建了一个列 我需要的是将此列与数据库中的另一列连接起来 select certificateDuration DurationType case when certificateDuratio
  • 我是否需要在外键上指定 ON DELETE NO ACTION?

    我有以下与 SQL Server 2012 一起使用的 DDL CREATE TABLE Subject SubjectId INT IDENTITY 1 1 NOT NULL Name NVARCHAR 50 Not NULL CONST
  • 如何获取自定义订单的结果? [关闭]

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

    的背景我试图解决第四个现实任务 https www hackthissite org playlevel 4 在 hackthissite org 中 无法确切地弄清楚我应该在 URL 中注入什么 SQL 来检索电子邮件列表 浪费了几个小时
  • SQL:在行中保留计数或从数据库中选择计数

    示例 我有 2 张桌子 类别 Posts 在这样的类别中保留帖子编号是一个好方法吗 类别 id title posts 1 golf 50 2 soccer 90 posts id title category id 1 news 1 1
  • SQL WHERE 取决于星期几

    我需要检查不同日期的记录 具体取决于当前是一周中的哪一天 在周五 我需要它查看整个下周 直到下周日 在其他任何一天 它都应该检查当前周 直到下周日 我目前有以下内容 但由于语法错误而无法工作 是否可以做一个CASE WHEN里面一个WHER
  • mysql 版本号排序

    我有这样的价值观 1 1 2 9 1 2 2 4 1 2 3 4 3 2 14 3 2 1 4 2 我需要使用 mysql 对这些值进行排序 该数据类型是 varbinary 300 所需的输出将类似于 1 1 2 1 2 3 4 2 2
  • 基于多个表的数据更新单个表 SQL Server 2005,2008

    我需要更新表one使用表中的数据two 表一和表二没有任何公共列相关 桌子three与表相关two 例如 表一 reg det 表 reg det id reg id results 101 11 344 表二 临时表 venue resu
  • SQL Server:应用正则表达式替换

    这是我的 SQL 查询 select codi nivell from anc documents 示例数据是 06080100000000 06080100000000 06080100000000 06080100000000 0608
  • 使用默认路径中的文件创建数据库

    我想创建一个创建数据库的 SQL 脚本 现在 我有这个 CREATE DATABASE Documents ON PRIMARY NAME N Documents FILENAME N Documents mdf LOG ON NAME N
  • 如何从MySQL数据库获取今天/昨天的数据?

    我想从数据库中检索今天的数据 但我不知道该怎么做 我实际上想要获取不是过去 24 小时的数据 我只想获取今天的数据 因此基于实际服务器时间 我还想获取昨天的数据 谁能帮我怎么做 示例代码 SELECT id FROM folk WHERE
  • 在 MySQL 中将值设置为 NULL

    我想要一个值被设置为NULL如果我提交的表单中的文本框中没有输入任何内容 我怎样才能做到这一点 我试过插入 NULL 但这只是添加了这个词NULL进入现场 我不确定我应该为此提供什么代码 我只是编写一个 UPDATE 查询 不要放NULL更
  • MySQL为每个组创建带有序列号的视图

    我在此网站上看到了类似的解决方案 但由于变量使用限制 它在视图中不可用 在MySQL中为每个组生成序列 https stackoverflow com questions 30118096 generating sequence for e
  • 从逗号分隔的字符串中删除重复项 (Amazon Redshift)

    我正在使用亚马逊红移 我在该字符串中有一个列存储为逗号分隔 例如Private Private Private Private Private Private United Healthcare 我想使用删除其中的重复项query 所以结果
  • “完整性约束违规:1062 重复条目” - 但没有重复行

    我正在将应用程序从本机 mysqli 调用转换为 PDO 尝试将行插入具有外键约束的表时遇到错误 Note 这是一个简化的测试用例 不应复制 粘贴到生产环境中 InfoPHP 5 3 MySQL 5 4 首先 这是表格 CREATE TAB
  • 如果字符串包含数字,则仅返回字符串中的数字

    例如 字符串是abc123CD需要找到一种只读方法numbers在字符串中i e select a postgres function abc123CD Result 123 My try select substring abc123CD
  • MySQL - 连接 a 或 b

    假设我有一个TABLE a其中一个COLUMN data是一个join其他 2 张桌子 TABLE b and TABLE c 因为我想得到一个COLUMN info in b or c 事情是a data将匹配only with b da
  • PostgreSQL 位图堆扫描索引非常慢,但仅索引扫描很快

    我创建了一个包含 43kk 行的表 并用值 1 200 填充它们 因此 表中每个数字大约为 220k create table foo id integer primary key val bigint insert into foo se

随机推荐

  • 如何使用 Ninject 将 ModelState 作为参数注入?

    我对 Ninject 很陌生 我想找到一种方法将控制器的 Modelstate 进一步传递到服务层 我现在拥有的 private readonly IAccountService service public AccountControll
  • 如何获取R代码表达式中的所有变量?

    如何解码 R 中的表达式以获取涉及的所有变量 例如 如果您有 z lt x y get all variables z 1 x y 您可以使用all vars 但你需要引用你的表达 all vars quote x y 1 x y 你不能只
  • Ninject 模型验证器导致中等信任度问题

    Using 忍者2 2 with ASP NET MVC 3 我有一个控制器和一些位于外部程序集中的类 它们是通过加载NinjectModule来自所述组件 这些模型包含一些验证属性 当对采用具有验证属性的模型的操作执行后操作时 Ninje
  • 如何从安装部署项目中排除 app.config

    如何从安装部署项目中排除 app config 我必须维护 app config 中的加密部分 我知道的唯一 半 嵌入方式是使用 RsaProtectedConfigurationProvider 或 DPAPI 提供程序运行代码 由于我必
  • 如何使decimal.TryParse保留尾随零?

    目前如果我这样做 decimal d temp 22 00 decimal TryParse temp NumberStyles Any CultureInfo InvariantCulture out d 然后 d 结果是 22 有什么方
  • System.Timer elapsed 事件似乎在 .Net 中短时间间隔内延迟触发

    我通过 UART 端口对系统进行采样 然后将信息记录在带有时间戳 包括毫秒 的文件中 如果我以 1 秒的间隔采样 数据会按预期返回 类似于 1 52 45 PM 750 data 1 52 45 PM 750 data 1 52 45 PM
  • r:缺失日期的完整值

    在 R 中 如果我有这些数据 date hour temp 2014 01 05 20 00 00 16 2014 01 06 20 00 00 14 2014 01 06 22 00 00 18 与seq我可以获得日期时间序列 begin
  • JSON如何判断成功与错误?

    我是 JSON 新手 一直在 MVC3 ASP NET 中使用它 但是有人可以阐明如何根据 JSON 结果返回错误吗 我的视图中有以下调用 ajax type POST dataType json url EditJSON data Fil
  • 使用 XMLHttpRequest 加载大型 json 文件 (250mb+)

    虽然我查看了此处和其他来源 但我似乎无法完全找到在 javascript 中使用 XMLHttpRequest 加载更大的 JSON 从文件 的问题 我从 C 应用程序生成此 JSON 文件 并且从未遇到过任何无效 json 的问题 较小的
  • 在 swift 3 中使用计时器自动更改 UIPageViewController 中的页面?

    I have UIPageViewController包含 4 个视图控制器 我设置了自动更改视图控制器的计时器 转到下一个视图控制器 这个计时器和方法将起作用但问题是它仅适用于第一张幻灯片以及应用程序运行时和 5 秒后UIPageView
  • Python - 获取命令输出无法解码

    我目前正在开发一个项目 我需要在 powershell 中运行命令 并且部分输出不是英语 特别是希伯来语 例如 问题的简化版本 如果我想获取桌面的内容 并且有一个希伯来语文件名 import subprocess command power
  • 我的 PHP 代码被注释掉了

    在这一切发生之前 我正在运行这个 wordpress 安装来使用 xampp 开发主题 但我决定将这台机器的内存从 2GB 升级到 6GB 因为我需要额外的空间来容纳应用程序 我通过复制代码将代码备份到单独的分区中 由于我当时的操作系统是3
  • 如何在 swift 中使信用卡 (xxxx-xxxx-xxxx) 输入文本

    我正在尝试使用以下代码创建信用卡类型文本 但无法做到这一点 有什么办法吗 func textField textField UITextField shouldChangeCharactersInRange range NSRange re
  • PHP内存分配不起作用

    WordPress 网站 Centos6 阿帕奇2 2 PHP 5 5 内存 4GB 我有以下 php 错误消息 致命错误 允许的内存大小 268435456 字节已耗尽 问题是我已经分配了512M on php 我已经改变了正确的变量ph
  • 如何提醒 Tic Tac Toe 中的获胜者?

    除其他事项外 我在试图提醒获胜者时遇到了麻烦 当用户尝试单击已按下的按钮时 我也尝试发出警报 但也不知道我在这方面正在做什么 感谢所有帮助 感谢你们 table tr td 00 td td 01 td td 02 td tr tr td
  • 将字符串月年(其中年份只有两位数)转换为 pandas 中的日期时间

    我有一个带有列的数据框month year这是一个字符串 其中年份只有两位数 我想转换month year列到日期时间列 df month year Jan 98 Feb 98 Mar 99 Apr 99 May 99 Oct 00 Nov
  • `__attribute__((some_attribute))` 和 `[[some_attribute]]` 之间有区别吗?

    我刚刚第一次遇到方括号中的属性 并且我做了一些背景阅读 http en cppreference com w cpp language attributes 至少对于 gcc 来说 似乎允许使用多种技术 attribute some att
  • 在单线程上下文中使用 JMS Session 对象的原因

    我是 JMS 的新手 所以对于这里的专家来说这可能是一个非常菜鸟的问题 然而 我很难理解 JMS 是如何工作的一个非常重要的概念 来自Javadoc 的JMS 会话 粗体强调我的 会话对象是单线程上下文用于生产和 消费消息 尽管它可以分配提
  • 读取 ASN.1 DER 编码的 RSA 公钥

    我正在编写一个应用程序来更好地了解 DKIM 规范说我从域 TXT 记录中检索 ASN 1 DER 编码 公钥 我可以在 s1024 domainkey yahoo com MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBi
  • MySQL显示两个值之差之和

    以下是我的查询 SELECT n name n customer id m msn m kwh m kwh LAG m kwh OVER PARTITION BY n customer id ORDER BY m data date tim