Davidliu 2 일 전
부모
커밋
3c852d1274
1개의 변경된 파일57개의 추가작업 그리고 40개의 파일을 삭제
  1. 57 40
      src/main/resources/mapper/TXlhtAddRecordMapper.xml

+ 57 - 40
src/main/resources/mapper/TXlhtAddRecordMapper.xml

@@ -143,46 +143,63 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
     <select id="selectTXlhtAddRecordHourList" parameterType="TXlhtAddRecord" resultMap="TXlhtAddRecordResult">
         SELECT
-            rec_hour.hour_time AS create_time,
-            sec_hour.instant_one_amount,
-            sec_hour.instant_two_amount,
-            rec_hour.one_amount,
-            rec_hour.two_amount,
-            rec_hour.tmp_one_amount,
-            rec_hour.tmp_two_amount,
-            rec_hour.real_one_amount,
-            rec_hour.real_two_amount
-        FROM (
-                 SELECT
-                     DATEADD(HOUR, DATEDIFF(HOUR, 0, create_time), 0) AS hour_time,
-                     avg(one_amount) AS one_amount,
-                     avg(two_amount) AS two_amount,
-                     avg(tmp_one_amount) AS tmp_one_amount,
-                     avg(tmp_two_amount) AS tmp_two_amount,
-                     avg(real_one_amount) AS real_one_amount,
-                     avg(real_two_amount) AS real_two_amount
-                 FROM t_xlht_add_record
-                <where>
-                1 = 1
-                <if test="timeBegin != null  and timeBegin != ''"> and DATEADD(HOUR, DATEDIFF(HOUR, 0, create_time), 0) &gt;= #{timeBegin}</if>
-                <if test="timeEnd != null  and timeEnd != ''"> and DATEADD(HOUR, DATEDIFF(HOUR, 0, create_time), 0) &lt;= #{timeEnd}</if>
-                </where>
-                 GROUP BY DATEADD(HOUR, DATEDIFF(HOUR, 0, create_time), 0)
-             ) AS rec_hour
-                 LEFT JOIN (
-            SELECT
-                DATEADD(HOUR, DATEDIFF(HOUR, 0, create_time), 0) AS hour_time,
-                AVG(one_amount) AS instant_one_amount,
-                AVG(two_amount) AS instant_two_amount
-            FROM t_xlht_add_record_sec
-            <where>
-                1 = 1
-                <if test="timeBegin != null  and timeBegin != ''"> and DATEADD(HOUR, DATEDIFF(HOUR, 0, create_time), 0) &gt;= #{timeBegin}</if>
-                <if test="timeEnd != null  and timeEnd != ''"> and DATEADD(HOUR, DATEDIFF(HOUR, 0, create_time), 0) &lt;= #{timeEnd}</if>
-            </where>
-            GROUP BY DATEADD(HOUR, DATEDIFF(HOUR, 0, create_time), 0)
-        ) AS sec_hour
-        ON sec_hour.hour_time = rec_hour.hour_time
+        rec_hour.hour_time AS create_time,
+        sec_hour.instant_one_amount,
+        sec_hour.instant_two_amount,
+        sec_hour.calculus_one_amount,
+        sec_hour.calculus_two_amount,
+        rec_hour.one_amount,
+        rec_hour.two_amount,
+        rec_hour.tmp_one_amount,
+        rec_hour.tmp_two_amount,
+        rec_hour.real_one_amount,
+        rec_hour.real_two_amount
+        FROM
+        (
+        SELECT
+        DATEADD(HOUR, DATEDIFF(HOUR, 0, create_time), 0) AS hour_time,
+        AVG(one_amount) AS one_amount,
+        AVG(two_amount) AS two_amount,
+        AVG(tmp_one_amount) AS tmp_one_amount,
+        AVG(tmp_two_amount) AS tmp_two_amount,
+        AVG(real_one_amount) AS real_one_amount,
+        AVG(real_two_amount) AS real_two_amount
+        FROM
+        t_xlht_add_record
+        <where>
+            1 = 1
+            <if test="timeBegin != null  and timeBegin != ''"> and DATEADD(HOUR, DATEDIFF(HOUR, 0, create_time), 0) &gt;= #{timeBegin}</if>
+            <if test="timeEnd != null  and timeEnd != ''"> and DATEADD(HOUR, DATEDIFF(HOUR, 0, create_time), 0) &lt;= #{timeEnd}</if>
+        </where>
+        GROUP BY
+        DATEADD(HOUR, DATEDIFF(HOUR, 0, create_time), 0)) AS rec_hour
+        LEFT JOIN (
+        SELECT
+        DATEADD(HOUR, DATEDIFF(HOUR, 0, create_time), 0) AS hour_time,
+        AVG(one_amount) AS instant_one_amount,
+        AVG(two_amount) AS instant_two_amount,
+        AVG(calculus_one_amount) AS calculus_one_amount,
+        AVG(calculus_two_amount) AS calculus_two_amount
+        FROM
+        (
+        SELECT
+        a.ID,
+        a.one_amount,
+        a.two_amount,
+        a.create_time,
+        ((a.one_amount + b.one_amount) / 2.0)  AS calculus_one_amount,
+        ((a.two_amount + b.two_amount) / 2.0)  AS calculus_two_amount
+        FROM
+        t_xlht_add_record_sec a
+        LEFT JOIN t_xlht_add_record_sec b ON b.create_time = (SELECT MAX(create_time) FROM t_xlht_add_record_sec WHERE create_time &lt; a.create_time)) AS sec
+        <where>
+            1 = 1
+            <if test="timeBegin != null  and timeBegin != ''"> and DATEADD(HOUR, DATEDIFF(HOUR, 0, create_time), 0) &gt;= #{timeBegin}</if>
+            <if test="timeEnd != null  and timeEnd != ''"> and DATEADD(HOUR, DATEDIFF(HOUR, 0, create_time), 0) &lt;= #{timeEnd}</if>
+        </where>
+        GROUP BY
+        DATEADD(HOUR, DATEDIFF(HOUR, 0, create_time), 0)
+        ) AS sec_hour ON sec_hour.hour_time = rec_hour.hour_time
         order by rec_hour.hour_time desc
     </select>
     <select id="selectTXlhtAddRecordDayList" parameterType="TXlhtAddRecord" resultMap="TXlhtAddRecordResult">