Jelajahi Sumber

投药报表, 天维度数据口径对齐

Davidliu 2 hari lalu
induk
melakukan
4cee8c99d7
1 mengubah file dengan 51 tambahan dan 30 penghapusan
  1. 51 30
      src/main/resources/mapper/TXlhtAddRecordMapper.xml

+ 51 - 30
src/main/resources/mapper/TXlhtAddRecordMapper.xml

@@ -187,46 +187,67 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </select>
     <select id="selectTXlhtAddRecordDayList" parameterType="TXlhtAddRecord" resultMap="TXlhtAddRecordResult">
         SELECT
-        rec_day.day_time AS create_time,
-        sec_day.instant_one_amount,
-        sec_day.instant_two_amount,
-        rec_day.one_amount,
-        rec_day.two_amount,
-        rec_day.tmp_one_amount,
-        rec_day.tmp_two_amount,
-        rec_day.real_one_amount,
-        rec_day.real_two_amount
-        FROM (
+        CAST(t.create_time AS DATE) AS create_time,
+        SUM(t.instant_one_amount) AS instant_one_amount,
+        SUM(t.instant_two_amount) AS instant_two_amount,
+        SUM(t.one_amount) AS one_amount,
+        SUM(t.two_amount) AS two_amount,
+        SUM(t.tmp_one_amount) AS tmp_one_amount,
+        SUM(t.tmp_two_amount) AS tmp_two_amount,
+        SUM(t.real_one_amount) AS real_one_amount,
+        SUM(t.real_two_amount) AS real_two_amount
+        FROM
+        (
+        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
-        CAST(create_time AS DATE) AS day_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
+        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 CAST(create_time AS DATE) &gt;= #{timeBegin}</if>
-            <if test="timeEnd != null  and timeEnd != ''"> and CAST(create_time AS DATE) &lt;= #{timeEnd}</if>
+            <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 CAST(create_time AS DATE)
-        ) AS rec_day
+        GROUP BY
+        DATEADD(HOUR, DATEDIFF(HOUR, 0, create_time), 0)
+        ) AS rec_hour
         LEFT JOIN (
         SELECT
-        CAST(create_time AS DATE) AS day_time,
+        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
+        FROM
+        t_xlht_add_record_sec
         <where>
             1 = 1
-            <if test="timeBegin != null  and timeBegin != ''"> and CAST(create_time AS DATE) &gt;= #{timeBegin}</if>
-            <if test="timeEnd != null  and timeEnd != ''"> and CAST(create_time AS DATE) &lt;= #{timeEnd}</if>
+            <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 CAST(create_time AS DATE)
-        ) AS sec_day
-        ON sec_day.day_time = rec_day.day_time
-        order by rec_day.day_time desc;
+        GROUP BY
+        DATEADD(HOUR, DATEDIFF(HOUR, 0, create_time), 0)
+        ) AS sec_hour
+        ON sec_hour.hour_time = rec_hour.hour_time
+        ) t
+        GROUP BY
+        CAST(t.create_time AS DATE)
+        ORDER BY
+        CAST(t.create_time AS DATE) DESC
     </select>
 </mapper>