mysql - 将十进制值转换为前 10 位

标签 mysql valueconverter

今天早些时候我收到了一些很大的帮助,但是当我在查询中实现它时比我想象的要困难。我的真实查询包括几个左连接。

我想添加两列,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/

相关文章:

java - 在java中将时间戳转换为日期

php - 查询从其他表中获取相应的用户 ID

mysql - 如何从 GROUP_CONCAT 中获取不同标题作为左连接而不重复其他表的数据?

mysql - 我可以使用 SQL 注入(inject)来更改服务器数据库吗?

mysql - 数据库效率

php - 最安全的LAMP加密方法

knockout.js - KnockoutJS 中值(value)转换的最佳方法?

silverlight - 如何将 ValueConverter 应用于基于约定的 Caliburn.Micro 绑定(bind)?

silverlight - 如何使用代码隐藏变量作为 ValueConverter 中 ConverterParameter 的输入

wpf - 如何在资源字典中使用引用转换器