数据库的这个应该如何解答

在oracle数据库中,工单表tbl_gddb存在以下字段:ID(唯一标识),ORDER_ID(工单编号),HANDEL_TIME(受理时间),MESSAGE_SLR(受理人),YWLX(业务类型),ISEND(是否办结)。现要写一个sql语句,统计业务类型包含“业务咨询”的每个受理人处理已办结工单的数量?

SELECT COUNT(TBL.ID),TBL.MESSAGE_SLR FROM tbl_gddb TBL ,(SELECT MESSAGE_SLR FROM tbl_gddb WHERE YWLX = "业务咨询")t WHERE TBL.MESSAGE_SLR = t.MESSAGE_SLR AND TBL.ISEND = "已办结"

SELECT COUNT(1) FROM tbl_gddb WHERE MESSAGE_SLR IN (SELECT DISTINCT(MESSAGE_SLR) FROM tbl_gddb WHERE YWLX = "业务咨询")  AND ISEND='已办结' GROUP BY MESSAGE_SLR

select YWLX,MESSAGE_SLR, count(ORDER_ID),ISEND from (select YWLX,MESSAGE_SLR,ISEND,ORDER_ID from tbl_gddb where YWLX = '业务咨询' and ISEND=1) as a group by YWLX,ISEND,MESSAGE_SLR

-- 子查询使用 DISTINCT 对 受理人 去重
SELECT a.YWLX, 
       a.MESSAGE_SLR, 
       COUNT(a.ID)
  FROM tbl_gddb a
 WHERE a.MESSAGE_SLR IN (
          SELECT DISTINCT b.MESSAGE_SLR
            FROM tbl_gddb b
           WHERE b.YWLX = '业务咨询'
       )
   AND a.ISEND = '已办结'
 GROUP BY a.YWLX, a.MESSAGE_SLR
 ORDER BY a.MESSAGE_SLR, a.YWLX
 ;

-- 或 使用 ANY 取满足的任意一条记录
SELECT a.YWLX, 
       a.MESSAGE_SLR, 
       COUNT(a.ID)
  FROM tbl_gddb a
 WHERE a.MESSAGE_SLR = ANY(
          SELECT b.MESSAGE_SLR
            FROM tbl_gddb b
           WHERE b.YWLX = '业务咨询'
       )
   AND a.ISEND = '已办结'
 GROUP BY a.YWLX, a.MESSAGE_SLR
 ORDER BY a.MESSAGE_SLR, a.YWLX
 ;

img

img



select MESSAGE_SLR, count(1) as '已办结工单量'
  from (select ORDER_ID,MESSAGE_SLR, YWLX, ISEND
          from tbl_gddb
         where YWLX = '业务咨询'
           and ISEND = '已办结') a --业务类型含“业务咨询”的已办结工单总量
 group by MESSAGE_SLR


```


select MESSAGE_SLR,count(1)  from  tbl_gddb  where YWLX like '%业务咨询%' and ISEND  = '已办结' group by  MESSAGE_SLR

YWLX(业务类型),ISEND(是否办结) 这两个字段 再求count



```sql
SELECT
    count( ID ) AS '已办结工单的数量',
    MESSAGE_SLR AS '受理人' 
WHERE
    YWLX = '业务咨询' 
    AND ISEND = '已办结' 
GROUP BY
    MESSAGE_SLR
    
sql解析: 以受理人分组统计, 业务类型为业务咨询并且状态是已办结的, 工单数量, where后面是伪代码, 可以以数据库实际状态修改

```