Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.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
Sql 使用从一列中的数据计算出的两列进行查询_Sql_Sql Server - Fatal编程技术网

Sql 使用从一列中的数据计算出的两列进行查询

Sql 使用从一列中的数据计算出的两列进行查询,sql,sql-server,Sql,Sql Server,我刚开始在工作中检查SQL server,但我无法解决这个非常简单的问题 假设我有这张桌子: Model Serial Pass Failure Y72742 LURC1 0 Ref 5 Y72742 LURC2 0 Ref 10 Y72596 JDID1 1 EMT Y72596 JDID2 1 EMT Y72742 LURC3 0 Ref 10 Y72596 JDID3 0 Ref 5 Y7259

我刚开始在工作中检查SQL server,但我无法解决这个非常简单的问题

假设我有这张桌子:

Model   Serial Pass   Failure  
Y72742  LURC1   0     Ref 5
Y72742  LURC2   0     Ref 10
Y72596  JDID1   1     EMT
Y72596  JDID2   1     EMT
Y72742  LURC3   0     Ref 10
Y72596  JDID3   0     Ref 5
Y72596  JDID4   0     Ref 18
Y72596  JDID5   1     EMT
Y72596  JDID6   0     Ref 18
Y72596  JDID7   0     Ref 5
Y72596  LURC4   1     UMT
Y72596  LURC5   1     UMT
所以在PASS列中,1表示单元通过,0表示单元失败。Failure(失败)列指明了失败的原因

我正在努力完成这样的事情:

Model   Pass   Failed   Percentage
Y72742   2       3         40%
Y72596   1       4         20%
但既然是同一个专栏,我就是做不成

我尝试使用带有“AND”运算符的子查询,但出现了错误。如果有人能帮助我,我将非常感激


注意。

您可以使用
SUM
分组依据构建查询:

SELECT
    Model
,   SUM(case when Pass=1 then 1.0 else 0.0 end) AS Pass
,   SUM(case when Pass=1 then 0.0 else 1.0 end) AS Failed
,   100*SUM(case when Pass=1 then 1.0 else 0.0 end)/COUNT(*) AS Percentage
FROM MyTable
GROUP BY Model
MySQL实现:

SELECT 
t.Model, 
SUM(IF(t.Pass=1,1,0)) as Passed, 
SUM(IF(t.Pass=0,1,0)) as Failed,
SUM(IF(t.Pass=1,1,0))/COUNT(t.Pass) as Percentage
FROM MyTable t 
GROUP BY t.Model

门廊是什么意思?通过率五分之二是40%,而不是66%,五分之一是20%,而不是25%。门廊是通过单位与总数的门廊,我看起来好像犯了一个错误,但达斯宾莱特和肯帮我修复了它。嗨,我把这个SELECT PartNum SUM(如果(t.Pass=1,1,0))作为通过,SUM(如果(t.Pass=0,1,0))作为失败,SUM(如果(t.Pass=1,1,0))/COUNT(t.Pass)作为[RceTestwareMfrLog].[dbo].[RceLogData]的百分比我得到的错误是:Msg 156,Level 15,State 1,Line 3在关键字“IF”附近语法错误。Msg 102,Level 15,State 1,Line 3在“,”附近语法错误。Msg 102,Level 15,State 1,Line 4在“,”附近语法错误。Msg 102,Level 15,State 1,Line 5在“,”附近语法错误。我被你的MySQL标记愚弄了你的问题。对于MS SQL Server,@dasblinkenlight的回答中给出了正确的语法。很抱歉,我对这个标签很陌生,我真的不知道它们之间的区别。这是我的错误。我还想感谢你花时间帮助我。问候。我写下:选择PartNum,SUM(Pass)作为Pass,SUM(1-Pass)AS Failed/*100.0*从[RCETESWAREMFRLOG].[dbo].[RceLogData]以百分比*的形式求和(通过)/计数(*)按PartNum分组,我得到了这个错误:Msg 8117,16级,状态1,第3行操作数数据类型位对于求和运算符无效。@LuisFernandoQuiñónez请查看编辑。你这个漂亮的混蛋,你做到了!我不确定,但你真的做到了,非常感谢你,你让我开心。祝你生活愉快。:)@欢迎你!如果您不需要进一步的帮助,请考虑通过点击旁边的复选标记来接受答案。这将让其他网站访问者知道你的问题已经解决,并为你赢得堆栈溢出徽章。完成后,我花5分钟寻找复选标记lol,谢谢!