具有聚合函数的小型SQL任务

时间:2016-03-09 23:57:57

标签: sql oracle

我试图用' 0'来计算C_ST'对于每个人,但不知道如何。 试图找到解决方案,但没有任何作用..

数据库结构:

The Structure of Database

QRY_TYPE ID - 类型的唯一标识符С_NAME - 类型名称,C_AB_REF - 指向处理这些类型消息的基因的链接)。

ST_ABONENTS ID - 唯一标识符,С_NAME - 名称)

QRY_QUEUE ID - 唯一标识符,С_IN_TIME - 将msg写入表格的日期和时间,C_EXEC_TIME - msg处理的日期和时间, C_ST - 处理状态(null - 没有,1 - 成功,0 - 处理时出错),C_QRY_TYPE - 查询类型的链接。)

这是我的一次尝试,它仍然无法正常工作

SELECT ST_ABONENTS.C_NAME AS "ABONENTNAME",COUNT(QRY_QUEUE.C_ST) AS "CNT" 
FROM ST_ABONENTS, QRY_QUEUE 
WHERE QRY_QUEUE.C_ST=0 
GROUP BY ST_ABONENTS.C_NAME 
HAVING COUNT(QRY_QUEUE.C_ST)>0;

结果应如下所示

Result

2 个答案:

答案 0 :(得分:1)

您错过了与表相关的连接条件。

SELECT a.c_name AS ABONENTNAME, COUNT(*) AS CNT
FROM ST_ABONENTS AS a
JOIN QRY_TYPE AS t ON a.ID = t.C_AB_REF
JOIN QRY_QUEUE AS q ON q.C_QRY_TYPE = t.ID
WHERE q.C_ST = 0
GROUP BY ABONENTNAME

答案 1 :(得分:0)

这将使c_st = 0

返回每个支持者的数量
select a.c_name as abonentname, count(*) as cnt
from st_abonents a
inner join qry_type qt on a.id = qt.c_ab_ref
inner join qry_queue qq on qt.id = qq.c_qry_type
where qq.c_st = 0
group by a.c_name