SQL回炉系列(五) 为显示曲线图获取不同时间颗粒的数据

本文主要是介绍SQL回炉系列(五) 为显示曲线图获取不同时间颗粒的数据,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在项目中,需要给用户展现某栋建筑的能耗曲线,用户可以选择单个电表,也可以选择总表,可以选择按年逐月、按月逐日或按日逐时。这是典型的数据分析和计算过程。闲话少说,直接上代码:

USE [PRODMS]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GOALTER proc [dbo].[getConsumptionChartData](@DateBegin  varchar(20),@DateEnd Varchar(20),@ty varchar(2), --y代表年,m代表月,d代表日逐时,b代表区间@backid varchar(3) -- 0 代表总能耗,其它数字代表各个电表)asbeginif @ty='y' -- 按年逐月beginif(@backid='0') -- 总能耗begin               select sum(consumption) ep , sum(price) price, convert(varchar(7),getTime,120) getTime from HourCost   where convert(varchar(4),getTime,120)=convert(varchar(4),@DateBegin,120)    group by convert(varchar(7),getTime,120)order by gettimeendelse -- 单个房间的能耗beginselect sum(consumption) ep , sum(price) price, convert(varchar(7),getTime,120) getTime from HourCost   where back=@backidand convert(varchar(4),getTime,120)=convert(varchar(4),@DateBegin,120)  group by convert(varchar(7),getTime,120)order by gettimeendendif @ty='m' -- 按月逐日beginif(@backid='0') -- 总能耗begin select sum(consumption) ep , sum(price) price, convert(varchar(10),getTime,120) getTime from HourCost where convert(varchar(7),getTime,120)=convert(varchar(7),@DateBegin,120)    group by convert(varchar(10),getTime,120)order by gettime    endelse -- 单个房间的能耗beginselect sum(consumption) ep , sum(price) price, convert(varchar(10),getTime,120) getTime from HourCost   where back=@backidand convert(varchar(7),getTime,120)=convert(varchar(7),@DateBegin,120)  group by convert(varchar(10),getTime,120) order by gettime    endendif @ty='d' -- 按日逐时begin   if(@backid='0') -- 总能耗beginselect sum(consumption) ep , sum(price) price, convert(varchar(13),getTime,120)+':00:00' getTime from HourCost where convert(varchar(10),getTime,120)=convert(varchar(10),@DateBegin,120)  group by convert(varchar(13),getTime,120)order by gettime    endelse -- 单个房间的能耗beginselect back, consumption ep , convert(varchar(13),getTime,120)+':00:00' gettime, price from HourCost where back=@backidand convert(varchar(10),getTime,120)=convert(varchar(10),@DateBegin,120)    order by gettime            endend if @ty='b' -- 时间区间beginif(@backid='0') -- 总能耗begin select convert(varchar(13),getTime,120)+':00:00' gettime, sum(consumption) ep ,sum(price) price from HourCost where  convert(varchar(13),getTime,120)>=convert(varchar(13),@DateBegin,120)and convert(varchar(13),getTime,120)<=convert(varchar(13),@DateEnd,120)group by convert(varchar(13),getTime,120)   order by gettime    endelse -- 单个房间beginselect back,  gettime, consumption ep ,price from HourCost where back=@backidand convert(varchar(13),getTime,120)>=convert(varchar(13),@DateBegin,120)and convert(varchar(13),getTime,120)<=convert(varchar(13),@DateEnd,120)order by gettime    endENDend--execute getConsumptionChartData '2014-08','2014-02-15 23:00:00','m','0'--execute getConsumptionChartData '2014','2014-02-15 23:00:00','y','14'--execute getConsumptionChartData '2015-03-26','2014-02-15 23:00:00','d','7'--execute getConsumptionChartData '2015-03-20 02:00:00','2015-03-20 12:00:00','b','6'  
  • SQL回炉系列(一) 序言
  • SQL回炉系列(二) 多表联合查询和排序
  • SQL回炉系列(三) 拆分原始数据到对应的月份表中
  • SQL回炉系列(四) 删除重复数据
  • SQL回炉系列(五) 为显示曲线图获取不同时间颗粒的数据

这篇关于SQL回炉系列(五) 为显示曲线图获取不同时间颗粒的数据的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/384211

相关文章

Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式

《Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式》本文详细介绍如何使用Java通过JDBC连接MySQL数据库,包括下载驱动、配置Eclipse环境、检测数据库连接等关键步骤,... 目录一、下载驱动包二、放jar包三、检测数据库连接JavaJava 如何使用 JDBC 连接 mys

SQL中如何添加数据(常见方法及示例)

《SQL中如何添加数据(常见方法及示例)》SQL全称为StructuredQueryLanguage,是一种用于管理关系数据库的标准编程语言,下面给大家介绍SQL中如何添加数据,感兴趣的朋友一起看看吧... 目录在mysql中,有多种方法可以添加数据。以下是一些常见的方法及其示例。1. 使用INSERT I

Qt使用QSqlDatabase连接MySQL实现增删改查功能

《Qt使用QSqlDatabase连接MySQL实现增删改查功能》这篇文章主要为大家详细介绍了Qt如何使用QSqlDatabase连接MySQL实现增删改查功能,文中的示例代码讲解详细,感兴趣的小伙伴... 目录一、创建数据表二、连接mysql数据库三、封装成一个完整的轻量级 ORM 风格类3.1 表结构

Python使用vllm处理多模态数据的预处理技巧

《Python使用vllm处理多模态数据的预处理技巧》本文深入探讨了在Python环境下使用vLLM处理多模态数据的预处理技巧,我们将从基础概念出发,详细讲解文本、图像、音频等多模态数据的预处理方法,... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核

Python使用OpenCV实现获取视频时长的小工具

《Python使用OpenCV实现获取视频时长的小工具》在处理视频数据时,获取视频的时长是一项常见且基础的需求,本文将详细介绍如何使用Python和OpenCV获取视频时长,并对每一行代码进行深入解析... 目录一、代码实现二、代码解析1. 导入 OpenCV 库2. 定义获取视频时长的函数3. 打开视频文

go中的时间处理过程

《go中的时间处理过程》:本文主要介绍go中的时间处理过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1 获取当前时间2 获取当前时间戳3 获取当前时间的字符串格式4 相互转化4.1 时间戳转时间字符串 (int64 > string)4.2 时间字符串转时间

MySQL 中的 CAST 函数详解及常见用法

《MySQL中的CAST函数详解及常见用法》CAST函数是MySQL中用于数据类型转换的重要函数,它允许你将一个值从一种数据类型转换为另一种数据类型,本文给大家介绍MySQL中的CAST... 目录mysql 中的 CAST 函数详解一、基本语法二、支持的数据类型三、常见用法示例1. 字符串转数字2. 数字

Mysql实现范围分区表(新增、删除、重组、查看)

《Mysql实现范围分区表(新增、删除、重组、查看)》MySQL分区表的四种类型(范围、哈希、列表、键值),主要介绍了范围分区的创建、查询、添加、删除及重组织操作,具有一定的参考价值,感兴趣的可以了解... 目录一、mysql分区表分类二、范围分区(Range Partitioning1、新建分区表:2、分

MySQL 定时新增分区的实现示例

《MySQL定时新增分区的实现示例》本文主要介绍了通过存储过程和定时任务实现MySQL分区的自动创建,解决大数据量下手动维护的繁琐问题,具有一定的参考价值,感兴趣的可以了解一下... mysql创建好分区之后,有时候会需要自动创建分区。比如,一些表数据量非常大,有些数据是热点数据,按照日期分区MululbU

SQL Server配置管理器无法打开的四种解决方法

《SQLServer配置管理器无法打开的四种解决方法》本文总结了SQLServer配置管理器无法打开的四种解决方法,文中通过图文示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录方法一:桌面图标进入方法二:运行窗口进入检查版本号对照表php方法三:查找文件路径方法四:检查 S