Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# sql查询中的多选择命令_C#_.net_Mysql_Sql - Fatal编程技术网

C# sql查询中的多选择命令

C# sql查询中的多选择命令,c#,.net,mysql,sql,C#,.net,Mysql,Sql,我想在我的sql中检索此类表: Type Qad (type count) Correct(No. of item without error) Accuracy(%) type 1 3 3 100 type2 6 3

我想在我的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;

我现在是新来的,希望有人能帮我。谢谢

查询中缺少括号,正确答案是:

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;

查询中缺少括号,正确答案是:

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;

声明返回的错误。从bartran中选择Type、Qad、Correct、accurity,其中QASample='2',以及其他您希望数据类似于分组类型的内容;声明返回的错误。从bartran中选择Type、Qad、Correct、accurity,其中QASample='2',以及其他您希望数据类似于分组类型的内容;我认为这解决了我的问题,但为什么执行要花很多时间呢?1分钟以上:(@JRC尝试我的新查询added@Ankur最好使用SUM而不是Count
SUM(当QARRORID='1'然后1 ELSE 0结束时的情况)
。也可以使用
Count(1)
,而不是
Count(*)
。这会有点麻烦faster@AndreyVoloshin计数(1)和计数(*)都是一样的,请看,我也没有发现sum是否优于count,所以我更喜欢count,因为代码清晰。我认为这现在解决了我的问题,但为什么执行会花费很多时间?1分钟多一点。:(@JRC尝试我的新查询added@Ankur使用SUM代替Count
SUM是一个很好的方法(当QARRORID='1'然后1 ELSE 0结束时的情况)
。也使用
COUNT(1)
,而不是
COUNT(*)
。这将是一个小错误faster@AndreyVoloshin计数(1)和计数(*)都是一样的,请看,而且我也没有发现sum是否比count好,所以从代码清晰的角度来看,我更喜欢count