From 88b14b3c7446f63a66dca1b3d4a5cff892739487 Mon Sep 17 00:00:00 2001 From: jinpengyong <jpy123456> Date: Thu, 05 Nov 2020 13:18:18 +0800 Subject: [PATCH] 从history表获取数据到分钟表sql回滚 --- src/main/resources/mapper/HistoryMapper.xml | 88 ++++++-------------------------------------- 1 files changed, 12 insertions(+), 76 deletions(-) diff --git a/src/main/resources/mapper/HistoryMapper.xml b/src/main/resources/mapper/HistoryMapper.xml index 0827a7e..b74a825 100644 --- a/src/main/resources/mapper/HistoryMapper.xml +++ b/src/main/resources/mapper/HistoryMapper.xml @@ -86,25 +86,9 @@ SELECT h.mac, <foreach collection="sensorKeys" separator="," item="sensorKey"> - <choose > - <when test="sensorKey=='e23'"> - ROUND((CASE WHEN AVG(value->'$.e18'*SIN((value->'$.e23'/180)*PI()))<![CDATA[>]]>0 AND AVG(value->'$.e18'*COS((value->'$.e23'/180)*PI()))<![CDATA[>]]>0 - THEN ATAN(AVG(value->'$.e18'*SIN((value->'$.e23'/180)*PI()))/AVG(value->'$.e18'*COS((value->'$.e23'/180)*PI())))*180/PI() - WHEN AVG(value->'$.e18'*SIN((value->'$.e23'/180)*PI()))>0 AND AVG(value->'$.e18'*COS((value->'$.e23'/180)*PI()))<![CDATA[<]]>0 - THEN (ATAN(AVG(value->'$.e18'*SIN((value->'$.e23'/180)*PI()))/AVG(value->'$.e18'*COS((value->'$.e23'/180)*PI())))*180/PI())+180 - WHEN AVG(value->'$.e18'*SIN((value->'$.e23'/180)*PI()))<![CDATA[<]]>0 AND AVG(value->'$.e18'*COS((value->'$.e23'/180)*PI()))<![CDATA[<]]>0 - THEN (ATAN(AVG(value->'$.e18'*SIN((value->'$.e23'/180)*PI()))/AVG(value->'$.e18'*COS((value->'$.e23'/180)*PI())))*180/PI())+180 - ELSE (ATAN(AVG(value->'$.e18'*SIN((value->'$.e23'/180)*PI()))/AVG(value->'$.e18'*COS((value->'$.e23'/180)*PI())))*180/PI())+360 - END),3) AS '${sensorKey}', - MAX(cast(h.value ->'$.${sensorKey}' as decimal(11,3))) AS 'MAX${sensorKey}', - MIN(cast(h.value ->'$.${sensorKey}' as decimal(11,3))) AS 'MIN${sensorKey}' - </when> - <otherwise> - AVG(value->'$.${sensorKey}') AS '${sensorKey}', - MAX(cast(h.value ->'$.${sensorKey}' as decimal(11,3))) AS 'MAX${sensorKey}', - MIN(cast(h.value ->'$.${sensorKey}' as decimal(11,3))) AS 'MIN${sensorKey}' - </otherwise> - </choose> + AVG(value->'$.${sensorKey}') AS '${sensorKey}', + MAX(cast(h.value ->'$.${sensorKey}' as decimal(11,3))) AS 'MAX${sensorKey}', + MIN(cast(h.value ->'$.${sensorKey}' as decimal(11,3))) AS 'MIN${sensorKey}' </foreach> FROM history h @@ -119,25 +103,9 @@ SELECT h.mac, <foreach collection="sensorKeys" separator="," item="sensorKey"> - <choose > - <when test="sensorKey=='e23'"> - ROUND((CASE WHEN AVG(value->'$.e18'*SIN((value->'$.e23'/180)*PI()))<![CDATA[>]]>0 AND AVG(value->'$.e18'*COS((value->'$.e23'/180)*PI()))<![CDATA[>]]>0 - THEN ATAN(AVG(value->'$.e18'*SIN((value->'$.e23'/180)*PI()))/AVG(value->'$.e18'*COS((value->'$.e23'/180)*PI())))*180/PI() - WHEN AVG(value->'$.e18'*SIN((value->'$.e23'/180)*PI()))>0 AND AVG(value->'$.e18'*COS((value->'$.e23'/180)*PI()))<![CDATA[<]]>0 - THEN (ATAN(AVG(value->'$.e18'*SIN((value->'$.e23'/180)*PI()))/AVG(value->'$.e18'*COS((value->'$.e23'/180)*PI())))*180/PI())+180 - WHEN AVG(value->'$.e18'*SIN((value->'$.e23'/180)*PI()))<![CDATA[<]]>0 AND AVG(value->'$.e18'*COS((value->'$.e23'/180)*PI()))<![CDATA[<]]>0 - THEN (ATAN(AVG(value->'$.e18'*SIN((value->'$.e23'/180)*PI()))/AVG(value->'$.e18'*COS((value->'$.e23'/180)*PI())))*180/PI())+180 - ELSE (ATAN(AVG(value->'$.e18'*SIN((value->'$.e23'/180)*PI()))/AVG(value->'$.e18'*COS((value->'$.e23'/180)*PI())))*180/PI())+360 - END),3) AS '${sensorKey}', - MAX(cast(h.value ->'$.${sensorKey}' as decimal(11,3))) AS 'MAX${sensorKey}', - MIN(cast(h.value ->'$.${sensorKey}' as decimal(11,3))) AS 'MIN${sensorKey}' - </when> - <otherwise> - AVG(value->'$.${sensorKey}') AS '${sensorKey}', - MAX(cast(h.value ->'$.${sensorKey}' as decimal(11,3))) AS 'MAX${sensorKey}', - MIN(cast(h.value ->'$.${sensorKey}' as decimal(11,3))) AS 'MIN${sensorKey}' - </otherwise> - </choose> + AVG(value->'$.${sensorKey}') AS '${sensorKey}', + MAX(cast(h.value ->'$.${sensorKey}' as decimal(11,3))) AS 'MAX${sensorKey}', + MIN(cast(h.value ->'$.${sensorKey}' as decimal(11,3))) AS 'MIN${sensorKey}' </foreach> FROM history h @@ -156,25 +124,9 @@ SELECT h.mac,DATE_FORMAT(time,'%Y-%m-%dT%H:%i') time, <foreach collection="sensorKeys" separator="," item="sensorKey"> - <choose > - <when test="sensorKey=='e23'"> - ROUND((CASE WHEN AVG(value->'$.e18'*SIN((value->'$.e23'/180)*PI()))<![CDATA[>]]>0 AND AVG(value->'$.e18'*COS((value->'$.e23'/180)*PI()))<![CDATA[>]]>0 - THEN ATAN(AVG(value->'$.e18'*SIN((value->'$.e23'/180)*PI()))/AVG(value->'$.e18'*COS((value->'$.e23'/180)*PI())))*180/PI() - WHEN AVG(value->'$.e18'*SIN((value->'$.e23'/180)*PI()))>0 AND AVG(value->'$.e18'*COS((value->'$.e23'/180)*PI()))<![CDATA[<]]>0 - THEN (ATAN(AVG(value->'$.e18'*SIN((value->'$.e23'/180)*PI()))/AVG(value->'$.e18'*COS((value->'$.e23'/180)*PI())))*180/PI())+180 - WHEN AVG(value->'$.e18'*SIN((value->'$.e23'/180)*PI()))<![CDATA[<]]>0 AND AVG(value->'$.e18'*COS((value->'$.e23'/180)*PI()))<![CDATA[<]]>0 - THEN (ATAN(AVG(value->'$.e18'*SIN((value->'$.e23'/180)*PI()))/AVG(value->'$.e18'*COS((value->'$.e23'/180)*PI())))*180/PI())+180 - ELSE (ATAN(AVG(value->'$.e18'*SIN((value->'$.e23'/180)*PI()))/AVG(value->'$.e18'*COS((value->'$.e23'/180)*PI())))*180/PI())+360 - END),3) AS '${sensorKey}', - MAX(cast(h.value ->'$.${sensorKey}' as decimal(11,3))) AS 'MAX${sensorKey}', - MIN(cast(h.value ->'$.${sensorKey}' as decimal(11,3))) AS 'MIN${sensorKey}' - </when> - <otherwise> - AVG(value->'$.${sensorKey}') AS '${sensorKey}', - MAX(cast(h.value ->'$.${sensorKey}' as decimal(11,3))) AS 'MAX${sensorKey}', - MIN(cast(h.value ->'$.${sensorKey}' as decimal(11,3))) AS 'MIN${sensorKey}' - </otherwise> - </choose> + AVG(value->'$.${sensorKey}') AS '${sensorKey}', + MAX(cast(h.value ->'$.${sensorKey}' as decimal(11,3))) AS 'MAX${sensorKey}', + MIN(cast(h.value ->'$.${sensorKey}' as decimal(11,3))) AS 'MIN${sensorKey}' </foreach> FROM history h @@ -193,25 +145,9 @@ SELECT h.mac,DATE_FORMAT(time,'%Y-%m-%dT%H:%i') time, <foreach collection="sensorKeys" separator="," item="sensorKey"> - <choose > - <when test="sensorKey=='e23'"> - ROUND((CASE WHEN AVG(value->'$.e18'*SIN((value->'$.e23'/180)*PI()))<![CDATA[>]]>0 AND AVG(value->'$.e18'*COS((value->'$.e23'/180)*PI()))<![CDATA[>]]>0 - THEN ATAN(AVG(value->'$.e18'*SIN((value->'$.e23'/180)*PI()))/AVG(value->'$.e18'*COS((value->'$.e23'/180)*PI())))*180/PI() - WHEN AVG(value->'$.e18'*SIN((value->'$.e23'/180)*PI()))>0 AND AVG(value->'$.e18'*COS((value->'$.e23'/180)*PI()))<![CDATA[<]]>0 - THEN (ATAN(AVG(value->'$.e18'*SIN((value->'$.e23'/180)*PI()))/AVG(value->'$.e18'*COS((value->'$.e23'/180)*PI())))*180/PI())+180 - WHEN AVG(value->'$.e18'*SIN((value->'$.e23'/180)*PI()))<![CDATA[<]]>0 AND AVG(value->'$.e18'*COS((value->'$.e23'/180)*PI()))<![CDATA[<]]>0 - THEN (ATAN(AVG(value->'$.e18'*SIN((value->'$.e23'/180)*PI()))/AVG(value->'$.e18'*COS((value->'$.e23'/180)*PI())))*180/PI())+180 - ELSE (ATAN(AVG(value->'$.e18'*SIN((value->'$.e23'/180)*PI()))/AVG(value->'$.e18'*COS((value->'$.e23'/180)*PI())))*180/PI())+360 - END),3) AS '${sensorKey}', - MAX(cast(h.value ->'$.${sensorKey}' as decimal(11,3))) AS 'MAX${sensorKey}', - MIN(cast(h.value ->'$.${sensorKey}' as decimal(11,3))) AS 'MIN${sensorKey}' - </when> - <otherwise> - AVG(value->'$.${sensorKey}') AS '${sensorKey}', - MAX(cast(h.value ->'$.${sensorKey}' as decimal(11,3))) AS 'MAX${sensorKey}', - MIN(cast(h.value ->'$.${sensorKey}' as decimal(11,3))) AS 'MIN${sensorKey}' - </otherwise> - </choose> + AVG(value->'$.${sensorKey}') AS '${sensorKey}', + MAX(cast(h.value ->'$.${sensorKey}' as decimal(11,3))) AS 'MAX${sensorKey}', + MIN(cast(h.value ->'$.${sensorKey}' as decimal(11,3))) AS 'MIN${sensorKey}' </foreach> FROM history h -- Gitblit v1.8.0