我想在我的sql中检索这种表:
Type Qad (type count) Correct(No. of item without error) Accuracy(%)
type 1 3 3 100
type2 6 3 50
我当前正在尝试使用此查询,但它有一个错误:
SELECT `type` AS 'ReturnType', COUNT(*) AS 'QAd',
(SELECT COUNT(*) FROM bartran WHERE QASample='2' AND QAErrorID='1' AND `type`=ReturnType AND TimefileDate BETWEEN '2012-01-01' AND '2012-12-31' AS 'Correct',
(SELECT COUNT(*) FROM bartran WHERE QASample='2' AND QAErrorID='1' AND `type`=ReturnType AND TimefileDate BETWEEN '2012-01-01' AND '2012-12-31') / COUNT(*) * 100) AS 'Accuracy'
FROM bartran WHERE QASample='2'
AND TimefileDate BETWEEN '2012-01-01' AND '2012-12-31'
GROUP BY TYPE;
我是这个人的新手,希望有人帮助我。谢谢!
答案 0 :(得分:3)
您在查询中缺少括号),正确的是:
SELECT `type` AS 'ReturnType',
Count(*) AS 'QAd',
(SELECT Count(*)
FROM bartran
WHERE qasample = '2'
AND qaerrorid = '1'
AND `type` = returntype
AND timefiledate BETWEEN '2012-01-01' AND '2012-12-31') AS
'Correct',
(SELECT Count(*)
FROM bartran
WHERE qasample = '2'
AND qaerrorid = '1'
AND `type` = returntype
AND timefiledate BETWEEN '2012-01-01' AND '2012-12-31') / Count(*
) * 100 AS 'Accuracy'
FROM bartran
WHERE qasample = '2'
AND timefiledate BETWEEN '2012-01-01' AND '2012-12-31'
GROUP BY type;
更好的查询将是:
SELECT `type` AS 'ReturnType',
Count(*) AS 'QAd',
Count(CASE
WHEN qaerrorid = '1' THEN 1
ELSE NULL
end) AS 'Correct',
Count(CASE
WHEN qaerrorid = '1' THEN 1
ELSE NULL
end) / Count(*) * 100 AS 'Accuracy'
FROM bartran
WHERE qasample = '2'
AND timefiledate BETWEEN '2012-01-01' AND '2012-12-31'
GROUP BY type;