Mysql SQL百分比查找任务
我正在尝试获取每种消息类型的处理错误百分比。 顺便说一下,我们只需要取大于5%的百分比。 试图找到解决方案,但没有任何效果 数据库的结构: QRY_类型(Mysql SQL百分比查找任务,mysql,sql,oracle-sqldeveloper,Mysql,Sql,Oracle Sqldeveloper,我正在尝试获取每种消息类型的处理错误百分比。 顺便说一下,我们只需要取大于5%的百分比。 试图找到解决方案,但没有任何效果 数据库的结构: QRY_类型(ID–类型的唯一标识符,С_名称–类型名称,C_AB_REF–链接到处理这些类型消息的联系人) ST_ABONENTS(ID–唯一标识符,С_名称–名称) QRY_队列(ID–唯一标识符,С_IN_TIME–将消息写入表中的日期和时间,C_EXEC_TIME–消息处理的日期和时间,C_ST–处理状态(null-未处理,1-成功,0-处理错误)
ID
–类型的唯一标识符,С_名称
–类型名称,C_AB_REF
–链接到处理这些类型消息的联系人)
ST_ABONENTS(ID
–唯一标识符,С_名称
–名称)
QRY_队列(ID
–唯一标识符,С_IN_TIME
–将消息写入表中的日期和时间,C_EXEC_TIME
–消息处理的日期和时间,C_ST
–处理状态(null-未处理,1-成功,0-处理错误),C_QRY_类型
–查询类型的链接)
那是我的一次尝试,它仍然不起作用
select qt.c_name as qrytype, count(qq.C_ST)/(SELECT count(*) from qry_queue)*100 as PRC
from qry_type qt
inner join qry_queue qq on qt.id = qq.c_qry_type
where qq.c_st =0
group by qt.c_name;
结果应该是这样的
如果没有实际的数据和信息,很难说什么是不起作用的 所以这可能就是你想要的:
select *
from
(
select qt.c_name as qrytype,
count(case when qq.c_st = '0' then qq.C_ST end) -- only rows with errors
/count(*) * 100 as PRC -- all rows
from qry_type qt
inner join qry_queue qq on qt.id = qq.c_qry_type
group by qt.c_name
) dt
where PRC >= 5
您似乎在使用Oracle(VarChar2
),为什么要标记mysql?