Sql 使用从一列中的数据计算出的两列进行查询
我刚开始在工作中检查SQL server,但我无法解决这个非常简单的问题 假设我有这张桌子: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
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,谢谢!