2012-10-25 66 views
1

说我有如下表:最高等级选择

-------------------- 
|ID|Yes|No|Filename| 
|01|15 |10|1.php | 
|02|12 |5 |2.php | 
|03|6 |1 |3.php | 
-------------------- 

我想要做的就是应用是/是+否在SQL SELECT语句和回声的最高值的文件名。

是和否会不时更新,所以最好是创建另一列来处理方程,或者可以在sql语句中使用方程式吗?这个选择语句是什么样的?

感谢

+1

什么是您正在使用的数据库服务器? –

回答

6

MySQL

SELECT Filename, 
     CAST((Yes/(Yes + No)) AS DECIMAL(10,5)) rating 
FROM table1 
WHERE CAST((Yes/(Yes + No)) AS DECIMAL(10,5)) = 
     (
      SELECT MAX(rating) 
      FROM 
      (
       SELECT CAST((Yes/(Yes + No)) AS DECIMAL(10,5)) rating 
       FROM table1 
      ) x 
     ) 

SQLFiddle Demo

SQL Server

SELECT TOP 1 WITH TIES Filename, 
     (Yes/(Yes + No)) rating 
FROM  table1 
ORDER BY rating DESC 

SQLFiddle Demo

2

您可以使用此方法:

SELECT TOP 1 sf.Filename 
    , (sf.Yes/(sf.Yes + sf.No)) AS RatioValue 
FROM dbo.storeFile AS sf 
ORDER BY (sf.Yes/(sf.Yes + sf.No)) DESC