一条sql同时返回多个count结果

select * from
        (select alarm_content name, count(id) `count`
        from ai_alarm
        WHERE alarm_content IS NOT NULL
        AND state in (0,1,2)
        AND alarm_content != '人数统计'
        <if test="startDate!=null and endDate!=null">
            AND ( alarm_time BETWEEN #{startDate} AND #{endDate}
            OR DATE(alarm_time) = #{endDate})
        </if>
        GROUP By alarm_content
        ) a
        left join
        (select alarm_content name0, count(id) `count0`
        from ai_alarm
        WHERE alarm_content IS NOT NULL
        AND state =0
        AND alarm_content != '人数统计'
        <if test="startDate!=null and endDate!=null">
            AND ( alarm_time BETWEEN #{startDate} AND #{endDate}
            OR DATE(alarm_time) = #{endDate})
        </if>
        GROUP By alarm_content
        ) b on a.name=b.name0
        left join
        (select alarm_content name1, count(id) `count1`
        from ai_alarm
        WHERE alarm_content IS NOT NULL
        AND state =1
        AND alarm_content != '人数统计'
        <if test="startDate!=null and endDate!=null">
            AND ( alarm_time BETWEEN #{startDate} AND #{endDate}
            OR DATE(alarm_time) = #{endDate})
        </if>
        GROUP By alarm_content
        ) c on a.name=c.name1

 

posted @ 2022-11-28 16:26  onecyl  阅读(294)  评论(0编辑  收藏  举报