select SUM(ZB_VALUE) ZB_VALUE,ZB_NAME FROM T_CHANNEL_BUSI_RANK WHERE OPERATOR_ID = #{opId} AND KPI_DATE = ( select max(KPI_DATE) from T_CHANNEL_BUSI_RANK where OPERATOR_ID = #{opId} <if test="date != '' and date != null"> AND TO_CHAR(to_date(KPI_DATE,'yyyy-MM-dd hh24:mi:ss'),'YYYYMM')=#{date} </if> <if test="date == null"> AND TO_CHAR(to_date(KPI_DATE,'yyyy-MM-dd hh24:mi:ss'),'YYYYMM')= TO_CHAR(sysdate,'YYYYMM') </if> ) GROUP BY ZB_NAME
时间: 2024-04-29 13:20:23 浏览: 143
这是一段SQL语句,用于查询T_CHANNEL_BUSI_RANK表中某个运营商的KPI指标的累计值(ZB_VALUE)以及KPI指标名称(ZB_NAME),并按照KPI指标名称进行分组。其中#{opId}是一个参数,代表运营商的ID,<if>标签中的代码是用于判断是否需要按照传入的日期进行查询,如果需要就按照日期进行查询,否则就默认查询当月的数据。
相关问题
UPDATE TB_TRANS_INFO SET STATUS_CODE = ?, TRANS_END_DT = ?, TRANS_SIGN_DT = ?, TRANS_TYPE = ?, SIGN_FLAG = ?, IS_LOCK = ?, CIR_STATUS = ?, BILL_STATUS = ?, RISK_STATUS = ?, ORDER_NO = ?, TRANS_BUSI_STATUS = ?, PLATFORM_FLAG = ?, UPDATE_TIME = ?, ORIGIN_CIR_STATUS = ?, ORIGIN_BILL_STATUS = ?, TRANS_DT = ? WHERE ((ID = ? AND BILL_ID = ?) OR (ID = ? AND BILL_ID = ?) OR (ID = ? AND BILL_ID = ?) OR (ID = ? AND BILL_ID = ?) OR (ID = ? AND BILL_ID = ?)) AND STATUS_CODE = ? AND TRANS_FROM_ACCT_NO = ? AND TRANS_FROM_BRCH_NO = ? AND IS_LOCK = ? AND TRANS_FROM_BRCH_NO = ?如何优化
这是一条 SQL 更新语句,其中包含多个条件和限制,需要根据具体情况进行优化。以下是一些可能的优化建议:
1. 使用索引:在 WHERE 子句中使用索引可以加快查询速度。可以考虑为 ID、BILL_ID、STATUS_CODE、TRANS_FROM_ACCT_NO 和 TRANS_FROM_BRCH_NO 列创建索引。注意,索引会占用存储空间,因此应根据实际情况选择合适的索引。
2. 减少 OR 条件:OR 条件会使查询变慢,尽量避免使用。可以将多个 OR 条件合并为一个 IN 条件。
3. 批量更新:如果需要更新多行数据,可以考虑使用批量更新语句,例如 INSERT INTO ... VALUES (1,2,3), (4,5,6), ...。这样可以减少与数据库的交互次数,提高效率。
4. 优化数据类型:如果可能的话,可以将数据类型更改为更小的类型,例如将 INT 更改为 SMALLINT,可以减少存储空间和查询时间。
5. 优化查询计划:可以使用 EXPLAIN 或其他查询计划工具来分析查询计划,找出可能的瓶颈并进行优化。例如,可以使用 JOIN 来替换多个 OR 条件,或者使用子查询来优化查询逻辑。
SQL优化以下语句(select f.file_name,a.content_id,c.fd_objectid level_id,c.level level_val,e.fd_objectid manage_id, ifnull((select count(fd_objectid) from message_receiver where MESSAGE_ID = e.fd_objectid), 0) SEND_PEOPLE_NUM, ifnull((select sum(case when reply_content is not null and reply_content != '' then 1 else 0 end) from message_receiver where MESSAGE_ID = e.fd_objectid), 0) reply_num, ifnull((select count(fd_objectid) from (select * from (select *,row_number() over(partition by seq,sendee_tel order by call_stat desc) flag from GROUPCALL_DETAILS) where flag = '1') where busi_id like concat('%', a.content_id) and busi_id like concat(a.event_id, '%')), 0) call_all, ifnull((select sum(case when call_stat like '%0%' then 1 else 0 end) from (select * from (select *,row_number() over(partition by seq,sendee_tel order by call_stat desc) flag from GROUPCALL_DETAILS) where flag = '1') where busi_id like concat('%', a.content_id) and busi_id like concat(a.event_id, '%')), 0) call_jt from NWYJ_SERVICE.ECM_EMYA_ORDER a left join MAP_EMEC_PLAN_CONTENT b on b.FD_OBJECTID = a.CONTENT_ID left join MAP_EMEC_PLAN c on c.FD_OBJECTID = b.RELATION_ID left join MAP_EMEC_ORG_RELATION d on d.FD_OBJECTID = b.ORG_RELATION_ID left join MESSAGE_MANAGE e on e.BUSI_ID = a.FD_OBJECTID left join MAP_EMEC_PLAN_ORG_TREE f on f.fd_objectid = d.org_id where a.event_id = #{eventId} and a.is_del = '0' and b.is_del = '0' and c.is_del = '0' and d.is_del = '0' and f.is_del = '0' and c.fd_objectid = #{levelId} and e.fd_objectid is not null)
以下是对给定的SQL语句进行优化的建议:
1. 使用连接查询代替子查询:将子查询转换为连接查询可以提高查询性能。可以使用LEFT JOIN来连接子查询的结果。
2. 使用COUNT()和SUM()函数的条件表达式:在使用COUNT()和SUM()函数时,可以使用条件表达式替代子查询,从而减少子查询的数量。
3. 使用预编译语句:使用预编译语句可以提高SQL的执行效率,并且可以防止SQL注入攻击。
4. 添加索引:根据查询中的条件列,可以考虑添加索引以提高查询性能。
下面是优化后的SQL语句:
```sql
SELECT
f.file_name, a.content_id, c.fd_objectid AS level_id, c.level AS level_val, e.fd_objectid AS manage_id,
IFNULL((
SELECT COUNT(fd_objectid)
FROM message_receiver
WHERE MESSAGE_ID = e.fd_objectid
), 0) AS SEND_PEOPLE_NUM,
IFNULL((
SELECT SUM(CASE WHEN reply_content IS NOT NULL AND reply_content != '' THEN 1 ELSE 0 END)
FROM message_receiver
WHERE MESSAGE_ID = e.fd_objectid
), 0) AS reply_num,
IFNULL((
SELECT COUNT(fd_objectid)
FROM (
SELECT *, ROW_NUMBER() OVER(PARTITION BY seq, sendee_tel ORDER BY call_stat DESC) flag
FROM GROUPCALL_DETAILS
) AS temp
WHERE flag = '1' AND busi_id LIKE CONCAT('%', a.content_id) AND busi_id LIKE CONCAT(a.event_id, '%')
), 0) AS call_all,
IFNULL((
SELECT SUM(CASE WHEN call_stat LIKE '%0%' THEN 1 ELSE 0 END)
FROM (
SELECT *, ROW_NUMBER() OVER(PARTITION BY seq, sendee_tel ORDER BY call_stat DESC) flag
FROM GROUPCALL_DETAILS
) AS temp
WHERE flag = '1' AND busi_id LIKE CONCAT('%', a.content_id) AND busi_id LIKE CONCAT(a.event_id, '%')
), 0) AS call_jt
FROM NWYJ_SERVICE.ECM_EMYA_ORDER a
LEFT JOIN MAP_EMEC_PLAN_CONTENT b ON b.FD_OBJECTID = a.CONTENT_ID
LEFT JOIN MAP_EMEC_PLAN c ON c.FD_OBJECTID = b.RELATION_ID
LEFT JOIN MAP_EMEC_ORG_RELATION d ON d.FD_OBJECTID = b.ORG_RELATION_ID
LEFT JOIN MESSAGE_MANAGE e ON e.BUSI_ID = a.FD_OBJECTID
LEFT JOIN MAP_EMEC_PLAN_ORG_TREE f ON f.fd_objectid = d.org_id
WHERE a.event_id = #{eventId}
AND a.is_del = '0'
AND b.is_del = '0'
AND c.is_del = '0'
AND d.is_del = '0'
AND f.is_del = '0'
AND c.fd_objectid = #{levelId}
AND e.fd_objectid IS NOT NULL
```
请注意,这些优化建议仅供参考,实际效果可能因数据库结构和数据量而有所不同。建议在进行任何更改之前,在测试环境中进行充分的测试和评估。
阅读全文
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)