database - 多个值的结果子查询 - SQL
问题描述
SUBQUERY
当我向 中添加多个客户名称时,我收到了反馈QUERY
,但如果您只输入一个值,即使使用IN
条件,也能QUERY
完美运行
查询失败
SELECT "CUSTOMER",
( ( ( ( CAST(COUNT(*) AS FLOAT) ) - (
SELECT
(CAST(COUNT(*) AS FLOAT))
FROM
public.tbl_metrics
WHERE
"CUSTOMER" IN (
'CLIENT1','CLIENT2','CLIENT3'
)
AND "STATUS" = 'NOT_TESTED'
GROUP BY
"STATUS",
"CUSTOMER"
) ) / CAST(COUNT(*) AS INT) ) * 100) as "PERCENT", count("STATUS") as "OK"
FROM
public.tbl_metrics
WHERE
"CUSTOMER" IN (
'CLIENT1','CLIENT2','CLIENT3'
)
AND "STATUS" = 'NOK'
GROUP BY
"STATUS",
"CUSTOMER"
查询成功
SELECT "CUSTOMER",
( ( ( ( CAST(COUNT(*) AS FLOAT) ) - (
SELECT
(CAST(COUNT(*) AS FLOAT))
FROM
public.tbl_metrics
WHERE
"CUSTOMER" IN (
'CLIENT1'
)
AND "STATUS" = 'NOT_TESTED'
GROUP BY
"STATUS",
"CUSTOMER"
) ) / CAST(COUNT(*) AS INT) ) * 100) as "PERCENT", count("STATUS") as "OK"
FROM
public.tbl_metrics
WHERE
"CUSTOMER" IN (
'CLIENT1'
)
AND "STATUS" = 'NOK'
GROUP BY
"STATUS",
"CUSTOMER"
解决方案
不清楚“获得反馈”是什么意思?我猜您的子查询返回的不止一行(因为内部查询将多个客户分组 = 多个结果)。
我建议从一个更简单的版本开始,让它工作,然后添加额外的计算(即百分比)。这是一个粗略的入门查询(不保证这会起作用,因为我无权访问您的表并且我猜测这是您希望完成的)。
SELECT met."CUSTOMER",
( SELECT COUNT(*)
FROM
public.tbl_metrics innerMet
WHERE
innerMet."CUSTOMER"= met."CUSTOMER"
AND "STATUS" = 'NOT_TESTED'
) as "NOT_TESTED", count("STATUS") as "OK"
FROM
public.tbl_metrics met
WHERE
met."CUSTOMER" IN (
'CLIENT1','CLIENT2','CLIENT3'
)
AND met."STATUS" = 'NOK'
GROUP BY
met."STATUS",
met."CUSTOMER"
推荐阅读
- python - 正则表达式拆分标点符号和空格,括号内除外
- php - 如何将多张图片保存到 Laravel 的数据库中?
- scala - 如何在 Spark SQL DSL 中表示数学表达式
- javascript - 在 .map 中添加条件
- schema.org - 第二页和连续页的类别页面json-ld模式?
- r - R条形图:xlim中不允许NA
- cakephp - Cake3:如何与不同数据库中的表建立belongsToMany关联?
- javascript - 鼠标停止时继续滚动容器
- regex - 如何让 sed 替换第一次出现的以多字符分隔符结尾的复杂字符串?
- python - 在日志记录中使用自 UNIX 纪元以来的秒数作为日期格式