今天早些时候我收到了一些很大的帮助,但是当我在查询中实现它时比我想象的要困难。我的真实查询包括几个左连接。
我想添加两列,T3MOutput 和 T1GOutput,显示基于 10-1 的排名 T3M 和 T1G 色谱柱。排名中最高的值应为 10,最低(负值)应为 1。注意!一场赛马比赛开始时的参赛马数可能少于 15 匹。在十个最佳值获得 10-1 后,其余的也应该获得值 1。
fiddle :http://sqlfiddle.com/#!2/9c5fc/4
我应该在哪里实现这行代码或其他解决方案?我始终只得到值 1..
(SELECT @row:=11 r) rows
以下是所有代码:
SELECT
base.number as NR,
rank.rpo AS RPO,
rank.rsp AS RSP,
rank.rsv AS RSV,
timer.t3m AS T3M, CASE WHEN @row>1 THEN @row:=@row-1 ELSE 1 END T3MOutput,
timer.t1g AS T1G, CASE WHEN @row>1 THEN @row:=@row-1 ELSE 1 END T1GOutput
FROM round
LEFT JOIN base
ON round.id = base.round_id
LEFT JOIN rank
ON round.id = rank.round_id AND rank.number = base.number
LEFT JOIN timer
ON round.id = timer.round_id AND timer.number = base.number
ORDER BY nr
最佳答案
第一
SELECT MIN(timer.t3m) AS MinT3M, MAX(timer.t3m) AS MaxT3M,
MIN(timer.t1g) AS MinT1G, MAX(timer.t1g) AS MaxT1G
FROM round INNER JOIN timer ON round.id = timer.round_id
WHERE round.round_date = '2013-03-22'
AND round.gameform = 'V65'
AND round.gameform_info = 'V65-1'
AND round.gameform not like "OSPEC";
然后你可以使用理查德在我输入此内容时提出的计算。
请参阅 SQL Fiddle here它使用您的数据。
关于mysql - 将十进制值转换为前 10 位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15623494/