查询每小时的累计量的SQL语句怎么写?

lengxl 2020-02-29 01:41:38
表结构和数据
时间 累计量
2020-02-24 00:01:00 100
2020-02-24 00:02:00 300
2020-02-24 00:03:00 400
..............
2020-02-24 23:59:00 3000

表数据每一分钟会插入一条,累计量会不断增加,现在需要查询统计每小时整点的时候累计量比上一小时整点的时候增加了多少?这个SQL语句怎么写,谢谢
...全文
1154 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
sichuanwww 2020-03-03
  • 打赏
  • 举报
回复
luj_1768 2020-03-03
  • 打赏
  • 举报
回复
select * from table1, where ... 把* 换成 COUNT 就行了。
lengxl 2020-03-02
  • 打赏
  • 举报
回复
引用 7 楼 Hello World, 的回复:
跨天的加一个时间段作为条件即可
版主,怎么加时间段,我自己试了一下不行,还需要你提供一下sql语句,谢谢
lengxl 2020-03-02
  • 打赏
  • 举报
回复
引用 9 楼 Hello World, 的回复:
类似以下:
DECLARE @t TABLE(时间 DATETIME,累计量 INT)
INSERT @t(时间, 累计量)
VALUES('2020-02-23 23:59:59',10),('2020-02-24 00:59:59',100),
('2020-02-24 01:30:00',200),('2020-02-24 01:59:59',300),
('2020-02-24 02:30:00',340),('2020-02-24 02:59:59',400),
('2020-02-24 03:30:00',440),('2020-02-24 03:59:59',500),
('2020-02-24 04:30:00',540),('2020-02-24 04:59:59',600),
('2020-02-24 05:30:00',640),('2020-02-24 05:59:59',700),
('2020-02-24 06:30:00',840),('2020-02-24 06:59:59',900)
;WITH t AS (SELECT * FROM @t WHERE 时间='2020-02-24 00:59:59'
UNION ALL SELECT a.* FROM @t a INNER JOIN t ON DATEADD(HOUR,1,t.时间) = a.时间 WHERE a.时间<'2020-2-25')
SELECT *,t.累计量-LAG(t.累计量) OVER (ORDER BY t.时间) 增量 FROM t
搞定了,谢谢版主
Hello World, 2020-03-02
  • 打赏
  • 举报
回复
跨天的加一个时间段作为条件即可
lengxl 2020-03-02
  • 打赏
  • 举报
回复
引用 9 楼 Hello World, 的回复:
类似以下:
DECLARE @t TABLE(时间 DATETIME,累计量 INT)
INSERT @t(时间, 累计量)
VALUES('2020-02-23 23:59:59',10),('2020-02-24 00:59:59',100),
('2020-02-24 01:30:00',200),('2020-02-24 01:59:59',300),
('2020-02-24 02:30:00',340),('2020-02-24 02:59:59',400),
('2020-02-24 03:30:00',440),('2020-02-24 03:59:59',500),
('2020-02-24 04:30:00',540),('2020-02-24 04:59:59',600),
('2020-02-24 05:30:00',640),('2020-02-24 05:59:59',700),
('2020-02-24 06:30:00',840),('2020-02-24 06:59:59',900)
;WITH t AS (SELECT * FROM @t WHERE 时间='2020-02-24 00:59:59'
UNION ALL SELECT a.* FROM @t a INNER JOIN t ON DATEADD(HOUR,1,t.时间) = a.时间 WHERE a.时间<'2020-2-25')
SELECT *,t.累计量-LAG(t.累计量) OVER (ORDER BY t.时间) 增量 FROM t
版主,我还需要查询2020-02-23 23:59:59到2020-02-24 00:59:59的增量90,这个数。我自己试了试,没弄出来,
Hello World, 2020-03-02
  • 打赏
  • 举报
回复
类似以下:
DECLARE @t TABLE(时间 DATETIME,累计量 INT)
INSERT @t(时间, 累计量)
VALUES('2020-02-23 23:59:59',10),('2020-02-24 00:59:59',100),
('2020-02-24 01:30:00',200),('2020-02-24 01:59:59',300),
('2020-02-24 02:30:00',340),('2020-02-24 02:59:59',400),
('2020-02-24 03:30:00',440),('2020-02-24 03:59:59',500),
('2020-02-24 04:30:00',540),('2020-02-24 04:59:59',600),
('2020-02-24 05:30:00',640),('2020-02-24 05:59:59',700),
('2020-02-24 06:30:00',840),('2020-02-24 06:59:59',900)
;WITH t AS (SELECT * FROM @t WHERE 时间='2020-02-24 00:59:59'
UNION ALL SELECT a.* FROM @t a INNER JOIN t ON DATEADD(HOUR,1,t.时间) = a.时间 WHERE a.时间<'2020-2-25')
SELECT *,t.累计量-LAG(t.累计量) OVER (ORDER BY t.时间) 增量 FROM t

lengxl 2020-03-01
  • 打赏
  • 举报
回复
引用 2 楼 Hello World, 的回复:
上面的增量忘记用当前累计量去减了
DECLARE @t TABLE(时间 DATETIME,累计量 INT)
INSERT @t(时间, 累计量)
VALUES('2020-02-24 00:00:00',100),
('2020-02-24 00:30:00',200),
('2020-02-24 01:00:00',300),
('2020-02-24 01:30:00',340),
('2020-02-24 02:00:00',400),
('2020-02-24 03:00:00',3000)
;WITH t AS (SELECT * FROM @t WHERE 时间='2020-02-24 00:00:00'
UNION ALL SELECT a.* FROM @t a INNER JOIN t ON DATEADD(HOUR,1,t.时间) = a.时间)
SELECT *,t.累计量-LAG(t.累计量) OVER (ORDER BY t.时间) 增量 FROM t
表数据每一分钟会插入一条,累计量会不断增加,如果表数据是这样的,需要查询出来2020-02-24这一天每个小时的增量,牵扯到跨天怎么处理? 表结构和数据 时间 累计量 2020-02-23 23:59:59 50 ........ 2020-02-24 00:59:59 100 2020-02-24 01:00:59 200 2020-02-24 01:01:59 300 .............. 2020-02-24 01:59:59 400 .............. 2020-02-24 22:59:59 2800 .............. 2020-02-24 23:59:59 3000 查询结果 2020-02-24 00:59:59 50 2020-02-24 01:59:59 300 .............. 2020-02-24 22:59:59 ..... 2020-02-24 23:59:59 200
lengxl 2020-03-01
  • 打赏
  • 举报
回复
引用 4 楼 Seagull16 的回复:
Replace CTE(with..as..) with Subquery
用子查询,sql语句怎么写
Seagull16 2020-03-01
  • 打赏
  • 举报
回复
Replace CTE(with..as..) with Subquery
lengxl 2020-02-29
  • 打赏
  • 举报
回复
引用 2 楼 Hello World, 的回复:
上面的增量忘记用当前累计量去减了
DECLARE @t TABLE(时间 DATETIME,累计量 INT)
INSERT @t(时间, 累计量)
VALUES('2020-02-24 00:00:00',100),
('2020-02-24 00:30:00',200),
('2020-02-24 01:00:00',300),
('2020-02-24 01:30:00',340),
('2020-02-24 02:00:00',400),
('2020-02-24 03:00:00',3000)
;WITH t AS (SELECT * FROM @t WHERE 时间='2020-02-24 00:00:00'
UNION ALL SELECT a.* FROM @t a INNER JOIN t ON DATEADD(HOUR,1,t.时间) = a.时间)
SELECT *,t.累计量-LAG(t.累计量) OVER (ORDER BY t.时间) 增量 FROM t
不用 with 。。。。 as能实现吗?
Hello World, 2020-02-29
  • 打赏
  • 举报
回复
上面的增量忘记用当前累计量去减了

DECLARE @t TABLE(时间 DATETIME,累计量 INT)
INSERT @t(时间, 累计量)
VALUES('2020-02-24 00:00:00',100),
('2020-02-24 00:30:00',200),
('2020-02-24 01:00:00',300),
('2020-02-24 01:30:00',340),
('2020-02-24 02:00:00',400),
('2020-02-24 03:00:00',3000)
;WITH t AS (SELECT * FROM @t WHERE 时间='2020-02-24 00:00:00'
UNION ALL SELECT a.* FROM @t a INNER JOIN t ON DATEADD(HOUR,1,t.时间) = a.时间)
SELECT *,t.累计量-LAG(t.累计量) OVER (ORDER BY t.时间) 增量 FROM t
Hello World, 2020-02-29
  • 打赏
  • 举报
回复
如果是查询某个确定的区间就好办,如果不确定某日期段内的起始区间可以先查出来:
以下示例简化了数量,仅用了整小时的,因为CET里会过滤的

DECLARE @t TABLE(时间 DATETIME,累计量 INT)
INSERT @t(时间, 累计量)
VALUES('2020-02-24 00:00:00',100),
('2020-02-24 01:00:00',300),
('2020-02-24 02:00:00',400),
('2020-02-24 03:00:00',3000)
;WITH t AS (SELECT * FROM @t WHERE 时间='2020-02-24 00:00:00'
UNION ALL SELECT a.* FROM @t a INNER JOIN t ON DATEADD(HOUR,1,t.时间) = a.时间)
SELECT *,LAG(t.累计量) OVER (ORDER BY t.时间) 增量 FROM t
内容概要:本文针对传统三电平并网逆变器存在的谐波含高、电网不平衡工况适应性差及动态响应滞后等问题,提出了一种基于有源中点箝位(ANPC)三电平逆变器的高性能并网控制策略。该策略融合了双极性倍频脉宽调制(DPWMA)、正负序分离锁相技术和电网电压前馈控制,构建了“精准同步-扰动补偿-优质调制”的一体化控制体系。通过Simulink搭建仿真模型,在稳态对称、电网不平衡及动态扰动等多种工况下进行验证,结果表明该复合控制策略能显著降低并网电流谐波,提升锁相精度,有效抑制功率波动,并大幅缩短系统动态调节时间,增强了逆变器在复杂电网环境下的稳定性与适应性。; 适合人群:从事电力电子、新能源并网、智能电网等相关领域的科研人员及工程技术人员,尤其适合具备一定MATLAB/Simulink仿真基础、专注于并网逆变器控制策略研究的研发人员; 使用场景及目标:①用于提升大功率并网逆变器在电网电压不平衡、骤升骤降等非理想工况下的运行性能;②为ANPC拓扑结构与先进控制算法(如DPWMA、前馈-反馈复合控制)的协同优化提供仿真依据和技术参考;③适用于新能源发电系统、工业变流装置等对电能质和动态响应要求较高的应用场景; 阅读建议:建议读者结合文中提出的控制架构图与仿真模型逐步复现,重点关注DPWMA调制实现、正负序分离锁相环设计及前馈补偿环节的参数整定,同时通过多工况仿真对比分析各项性能指标,深入理解各模块间的协同作用机制。
内容概要:本文以ANPC三电平并网逆变器为研究对象,提出了一种融合双极性倍频脉宽调制(DPWMA)、正负序分离锁相与电网电压前馈控制的高性能并网控制策略。通过对ANPC拓扑结构的分析,阐明其在开关损耗均衡、中点电位稳定和低输出谐波方面的硬件优势,为高质并网奠定基础。在此基础上,DPWMA调制策略有效提升输出波形的等效开关频率,显著降低谐波含;正负序分离锁相技术可精准提取电网正序分,克服电网不平衡导致的锁相失真与电流不对称问题;电网电压前馈控制则增强系统对动态扰动的响应能力,缩短调节时间。文章构建了“信号采集—核心控制—调制驱动”的三层协同控制架构,并通过多工况仿真验证了该策略在稳态、不平衡及动态扰动条件下的优越性能,结果表明系统具备优异的电能质、运行稳定性与抗扰能力。; 适合人群:电力电子、新能源并网、自动控制等相关领域的科研人员、研究生及从事逆变器设计与控制的工程技术人员。; 使用场景及目标:① 提升大功率并网逆变器在复杂电网环境下的运行稳定性与电能质;② 解决电网电压不平衡、谐波畸变、电压骤变等工况下的锁相失真与电流不对称问题;③ 优化动态响应性能,应用于新能源发电、工业变流器等高可靠性要求场景; 阅读建议:建议结合Matlab/Simulink仿真平台,复现文中控制策略与仿真模型,重点理解DPWMA调制实现方法、正负序分离锁相环设计及前馈-反馈复合控制结构的协同机制,并通过不同扰动工况测试系统鲁棒性。
内容概要:本文研究了基于Q-Learning自适应强化学习的PID控制器在自主水下航行器(AUV)运动控制中的应用,旨在提升水下机器人在复杂、非线性及动态变化海洋环境中的控制精度与自适应能力。通过将强化学习算法与传统PID控制深度融合,构建了一种能够在线自主调整PID参数的智能控制框架,有效克服了传统PID控制器在面对模型不确定性、外部干扰和时变系统特性时适应性不足的问题。研究详细阐述了AUV的动力学建模过程,并精心设计了Q-Learning算法的状态空间、动作空间与奖励函数,使其能在Matlab仿真环境中通过不断的交互试错进行学习与优化,最终实现对航向角、深度等关键运动姿态的高精度、强鲁棒性控制。仿真结果充分验证了该方法在响应速度、稳态精度和抗干扰性能方面相较于传统方法的显著优越性,为智能水下装备的自主决策与控制提供了重要的理论依据和技术路径。; 适合人群:具备自动控制理论基础、强化学习初步知识及MATLAB编程能力的研究生、科研人员及从事智能机器人、无人系统控制开发的工程师。; 使用场景及目标:①应用于水下机器人、无人潜航器等复杂动态系统的智能控制设计;②解决传统PID控制器参数整定困难、环境适应性差和鲁棒性不足的关键问题;③推动强化学习等人工智能技术在实际工程控制系统中的落地应用、性能优化与可靠性验证。; 阅读建议:建议读者结合提供的Matlab代码进行仿真实践,重点关注Q-Learning与PID的耦合机制、状态与奖励函数的设计原则,深入理解智能控制策略的训练收敛过程、超参数敏感性及其在不同工况下的性能表现。

22,296

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧