From 881e13105ca2d99be13ef6f06137c0e4763e3a78 Mon Sep 17 00:00:00 2001 From: xufenglei <xufenglei> Date: Fri, 03 Nov 2017 15:29:07 +0800 Subject: [PATCH] sql 改进 --- src/main/resources/mapper/HistoryEntityMapper.xml | 74 +++++++++++++++++++----------------- 1 files changed, 39 insertions(+), 35 deletions(-) diff --git a/src/main/resources/mapper/HistoryEntityMapper.xml b/src/main/resources/mapper/HistoryEntityMapper.xml index 5df5dd4..cddc593 100644 --- a/src/main/resources/mapper/HistoryEntityMapper.xml +++ b/src/main/resources/mapper/HistoryEntityMapper.xml @@ -227,7 +227,7 @@ </update> <select id="getMonthAverageBySensor" resultType="map"> SELECT - AVG(mac_value) monthAverage + AVG(mac_value) average FROM history WHERE @@ -238,54 +238,58 @@ </select> <select id="getAverageByAll" resultType="map"> -<!-- SELECT - h.mac_key, + <if test="macKey != null and macKey != 'all'"> + e.name, + </if> + <if test="macKey == 'all'"> + h.mac_key, + </if> AVG(h.mac_value) avg FROM history h, monitorpoint m, equipment e - <if test="orgIds != null and orgIds.size > 0"> - JOIN org_equ oe ON e.id = oe.equid - AND oe.orgid IN - <foreach collection="orgIds" item="listItem" open="(" separator="," close=")" > - #{listItem} - </foreach> - </if> WHERE m.areacode = #{areaCode} AND m.id = e.monitorpoint AND e.mac = h.mac AND h.time > #{start} AND h.time < #{end} - GROUP BY - h.mac_key - --> + <if test="orgIds != null and orgIds.size > 0"> + <!-- JOIN org_equ oe ON e.id = oe.equid --> + AND e.owner_id IN + <foreach collection="orgIds" item="listItem" open="(" separator="," close=")" > + #{listItem} + </foreach> + </if> + <if test="macKey != null and macKey != 'all'"> + AND h.mac_key = #{macKey} + GROUP BY e.id + ORDER BY avg + </if> + <if test="macKey == 'all'"> + GROUP BY h.mac_key + </if> + </select> + <select id="getEquipmentStates" resultType="map"> SELECT - mac_key, - AVG(mac_value) avg + COUNT(state) count, + state FROM - history h - <if test="orgIds!=null and orgIds.size > 0"> - JOIN ( - SELECT - e.mac - FROM - equipment e, - org_equ oe - WHERE - e.id = oe.equid - AND oe.orgid IN - <foreach collection="orgIds" item="listItem" open="(" separator="," close=")" > - #{listItem} - </foreach> - ) e ON h.mac = e.mac - </if> - WHERE h.time > #{start} - AND h.time < #{end} - GROUP BY - mac_key + equipment + <if test="orgIds != null and orgIds.size > 0"> + <!-- JOIN org_equ oe ON e.id = oe.equid --> + where owner_id IN + <foreach collection="orgIds" item="listItem" open="(" separator="," close=")" > + #{listItem} + </foreach> + </if> + GROUP BY state + </select> + + <select id="getMacLogByLast" resultType="string"> + SELECT mac_log FROM logger ORDER BY time DESC LIMIT 1 </select> </mapper> \ No newline at end of file -- Gitblit v1.8.0