2011-12-20 47 views
1

我有类似下面的表格:集概率SQL查询

Number Occurrence 
    1   12 
    2   30 
    3   15 
    4   20 

我想根据每个号码的出现,计算概率,然后想用概率最高的数字。

我想为此SQL查询。

+3

如果只是最高可能性是不就是最高的次数和你不需要的概率 – Mark 2011-12-20 22:13:23

+1

你能否详细说明一点更多?你只需要发生数量最多的数字,还是你真的想'掷骰子'并得到一个随机值加权的事件? – 2011-12-20 22:14:11

+0

我想用概率工作,我需要概率来给个人分配个人概率。因此,不仅仅是具有最高概率的列,我实际上需要具有不同概率的所有列。 – Hiren 2011-12-20 22:25:10

回答

4
SELECT Number, Occurance, 
     Occurance*1.0/(SELECT SUM(Occurance) FROM YourTable) AS Probability 
    FROM YourTable 
    ORDER BY Occurance DESC 
+0

为什么'* 1.0'请 - 是否得到1位小数? – 2011-12-20 22:19:50

+0

好吧,我认为,我应该给更多的idea.Occurance已经是聚合函数。我的意思是Occurance是另一列的数量。 – Hiren 2011-12-20 22:20:55

+0

@BarryKaye如果Occurance是一个INT,那么操作将隐式返回一个INT数据类型,并且所有值都将为0. * 1.0强制一个非整数返回类型。 – 2011-12-20 22:21:05

1

TSQL:

SELECT TOP(1) Number 
FROM Table_name 
ORDER BY Occurance DESC 

MySQL的:

SELECT Number 
FROM Table_name 
ORDER BY Occurance DESC 
LIMIT 1; 
+0

为什么你认为它是SQL服务器? – 2011-12-20 22:21:02

+0

@ypercube固定,谢谢指出 – 2011-12-20 22:25:56