2013-01-17 63 views
0

我想在我的SQL检索这种表:多个SELECT命令

Type  Qad (type count)  Correct(No. of item without error)  Accuracy(%) 
    type 1  3         3       100 
    type2   6         3        50 

我curretly尝试使用此查询,但它有一个错误:

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

国家的错误返回。 – hjpotter92

+0

从bartran中选择类型,Qad,正确,准确性,其中QASample ='2'和其他你希望数据类似于GROUP BY类型的东西; – Vogel612

回答

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; 
+0

我认为这现在解决了我的问题,但为什么执行需要很多时间? 1分钟加。 :( – jomsk1e

+0

@JRC尝试新的查询,我已经添加 – Ankur

+0

真棒学习从你Ankur !!谢谢!! – jomsk1e