简单的MySQL问题
好的,我有一列用简单的MySQL问题,mysql,Mysql,好的,我有一列用W或L表示赢或输。我想数一数所有的胜负,并得到一个赢的百分比 SELECT banner_name, count(win_loss) as wins FROM drop_log where win_loss = 'W' group by banner_name 这给了我所有的球队以及他们赢了多少场。我如何调整它,使之有另一列的损失和另一列的比率。MySQL似乎与SQLServer2008具有不同的语法规则 SELECT banner_name, SUM(IF(win_lo
W
或L
表示赢或输。我想数一数所有的胜负,并得到一个赢的百分比
SELECT banner_name, count(win_loss) as wins
FROM drop_log
where win_loss = 'W'
group by banner_name
这给了我所有的球队以及他们赢了多少场。我如何调整它,使之有另一列的损失和另一列的比率。MySQL似乎与SQLServer2008具有不同的语法规则
SELECT banner_name, SUM(IF(win_loss = "W", 1, 0)) AS wins,
SUM(IF(win_loss = "L", 1, 0)) AS losses
FROM drop_log
GROUP BY banner_name
您也可以通过这种方式获得百分比,但在选择后也很容易进行分割
使用布尔值(0
或1
)来指定赢或输也会更好,但这也会以几乎相同的方式工作
编辑:实际上,只需使用
SUM(win\u loss='letter')
就可以了,因为这将返回1
或0
。这将获得您想要的所有3个值
SELECT banner_name, wins, total-wins AS losses, wins/total AS win_ratio
FROM (select banner_name, SUM(win_losses = 'W') AS wins, COUNT(*) AS total
FROM drop_log
GROUP BY banner_name) w
只是一个建议,我建议您使用整数而不是字符串来表示赢或输。它更快、更高效。还有,你用什么语言与MySQL接口?你错了,你的查询告诉你他们赢了多少。它告诉你他们玩了多少游戏--count(win\u loss)统计赢和输;我只是帮忙。有点像盲人在引导盲人。哈哈,快速回答:)谢谢你们的帮助。@BillKarwin为什么?他们都可以。这是ANSI的事情吗?@Barmar,是的,在ANSI SQL中,双引号用于分隔标识符,就像MySQL使用回号一样。如果您
设置SQL\u MODE=ANSI\u QUOTES
,它会使MySQL符合标准,但是任何习惯于对字符串或日期文本使用双引号的人都会发现他们的查询中断。所以只要养成用单引号表示字符串和日期的习惯,你就会没事了。