jinpengyong
2020-10-15 da1f5f7343539fca6148dd0c4f797f5cf01694a4
src/main/resources/mapper/HistoryMinutelyMapper.xml
@@ -276,21 +276,21 @@
        FROM
        history_${timeUnits} h inner join
        (select mac from device where monitor_point_id in
            (
            select id from monitor_point
            where
            <if test="areaCode != null">
                area_code = #{areaCode}
            </if>
        (
        select id from monitor_point
        where
        <if test="areaCode != null">
            area_code = #{areaCode}
        </if>
            <if test="cityCode != null">
                city_code = #{cityCode}
            </if>
        <if test="cityCode != null">
            city_code = #{cityCode}
        </if>
            <if test="provinceCode != null">
                province_code = #{provinceCode}
            </if>
            )
        <if test="provinceCode != null">
            province_code = #{provinceCode}
        </if>
        )
        and is_delete=0) m
        on h.mac=m.mac
        and h.time>=#{start}
@@ -298,4 +298,42 @@
        ORDER BY
        h.time
    </select>
    <select id="getMultiDeviceSensorData" resultType="java.util.Map">
        SELECT
        DATE_FORMAT(time, #{typeFormat}) time,
        <foreach collection="macs" separator="," item="mac" index="index">
            AVG(json->'$.${sensorKey}[0]') AS '${index}${sensorKey}'
        </foreach>
        FROM
        history_${timeUnits}
        WHERE
        <foreach collection="macs" separator="," item="mac" index="index">
            mac = #{mac}
        </foreach>
        AND time >= #{start}
        AND h.time <![CDATA[<]]> #{end}
        GROUP BY
        DATE_FORMAT(time, #{typeFormat})
        ORDER BY
        time
    </select>
    <select id="getMultiDeviceSensorData1" resultType="java.util.Map">
        SELECT *
        from
        <foreach collection="macs" separator="," item="mac" index="index">
            (SELECT
            AVG(json->'$.${sensorKey}[0]') AS '${index}${sensorKey}',
            DATE_FORMAT(time,'%Y-%m') as time
            FROM history_${timeUnits}
            WHERE mac=#{mac}
            AND time >= #{start}
            AND time <![CDATA[<]]> #{end}
            GROUP BY DATE_FORMAT(time,#{typeFormat})
            ORDER BY
            time) as t${index}
        </foreach>
        WHERE t1.time=t2.time
    </select>
</mapper>