Database 多个值的结果子查询-SQL
当我向Database 多个值的结果子查询-SQL,database,postgresql,Database,Postgresql,当我向QUERY添加多个客户名称时,我从子查询中得到反馈,但是如果您只输入一个值,即使在条件中使用,QUERY也能很好地工作 查询失败 SELECT "CUSTOMER", ( ( ( ( CAST(COUNT(*) AS FLOAT) ) - ( SELECT (CAST(COUNT(*) AS FLOAT)) FROM public.tbl_metrics WHERE
QUERY
添加多个客户名称时,我从子查询
中得到反馈,但是如果您只输入一个值,即使在条件中使用,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 "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"
“获得反馈”的含义并不十分清楚?我猜您的子查询返回了不止一行(因为内部查询分组多个客户=多个结果)
我建议从一个更简单的版本开始,开始工作,然后添加额外的计算(即百分比)。这里是一个粗略的初始查询(不能保证这会起作用,因为我没有访问您的表的权限,我猜测这就是您希望实现的目标)
“获得反馈”的含义并不十分清楚?我猜您的子查询返回了不止一行(因为内部查询分组多个客户=多个结果)
我建议从一个更简单的版本开始,开始工作,然后添加额外的计算(即百分比)。这里是一个粗略的初始查询(不能保证这会起作用,因为我没有访问您的表的权限,我猜测这就是您希望实现的目标)
如果子查询返回多个结果,此查询将显示错误,因为您执行的减法需要一行结果。。。
当您请求多个客户时,子查询似乎至少返回2行如果子查询返回多个结果,此查询将显示错误,因为您执行的减法需要一行结果。。。
当您询问多个客户时,子查询似乎至少返回2行使用名称“CUSTOMER”指定答案。注意:我建议不要使用双引号;这迫使postgres将名称视为区分大小写(不带引号,它会自动将表名转换为小写);该示例仅返回客户至少有一个“NOK”状态的记录(因此在“OK”列中永远不会得到0)。使用名称“customer”回答。注意:我建议不要使用双引号;这迫使postgres将名称视为区分大小写(不带引号,它会自动将表名转换为小写);该示例仅返回客户至少有一个“NOK”状态的记录(因此在“OK”列中永远不会得到0)。