我需要计算最终交易与总交易相比的百分比(例如,包括在制品和最终交易)。通过浏览网页,我到达了:
SELECT 100 * (SELECT COUNT(transaction_id) from t_transaction_main
WHERE due_date = '2016-05-16' and (suspend_status !='' OR
close_date != '0-0000-00'))/COUNT(transaction_id) from t_transaction_main as test;
到目前为止它起作用了;但是,虽然最终的交易查询是按预期进行的,但我实际上只需要在特定日期(此处为2016-05-16)将其除以交易。但是当我添加WHERE子句时......
SELECT 100 * (SELECT COUNT(transaction_id) from t_transaction_main
WHERE due_date = '2016-05-16' and (suspend_status !='' OR
close_date !='0-0000-00'))/COUNT(transaction_id) WHERE due_date = '2016-05-16' from t_transaction_main as test;
它立即停止工作并返回语法错误。我也尝试将COUNT(transaction_id) WHERE due_date = '2016-05-16'
括在括号内,但它没有帮助。
欢迎任何解决方案,谢谢。
答案 0 :(得分:0)
我没有看到在第二个查询中使用WHERE作为子查询只返回这些日期
答案 1 :(得分:0)
将错误的子句序列放在from子句
之前的位置SELECT 100 * (SELECT COUNT(transaction_id)
from t_transaction_main
WHERE due_date = '2016-05-16' and (suspend_status !='' OR
close_date !='0-0000-00'))/COUNT(transaction_id)
FROM t_transaction_main as test
WHERE due_date = '2016-05-16' ;
答案 2 :(得分:0)
WHERE
条款需要在最终from t_transaction_main as test
答案 3 :(得分:0)
为什么要使用子查询?甚至两个聚合函数?
SELECT AVG(CASE WHEN suspend_status <> '' OR close_date <> '0-0000-00'
THEN 100.0 ELSE 0
END)
FROM t_transaction_main test
WHERE due_date = '2016-05-16' ;
这比原始查询简单 。