2011-08-04 100 views
1

获取由会员利用率最高我的数据看起来是这样的:SQL - 由供应商

Member - Provider - UtilizationCounts 

123 - AA  - 10 
234 - BB  - 8 
456 - AA  - 7 
123 - CC  - 5 

我需要出示会员信息和供应商信息具有最高的利用率。这样的成绩应该是这个样子:

Member - Provider - UtilizationCounts 

123 - AA  - 10 
234 - BB  - 8 
456 - AA  - 7 
+0

你总是只需要3个结果吗?还是我们缺少你的例子中的某些东西? – Lamak

+0

我认为下面的答案不正确。我想TC意味着他需要找到每个成员的所有最高提供者。所以,如果234有3个BBB,值为10,20,30,查询应该返回234-BBB-30 – user194076

+0

@ user194076 - 如果是这样,他还没有说清楚。也许在示例中添加更多结果可以帮助您获得更好的答案 – Lamak

回答

4

这听起来我像你希望的是有一个排的每个成员,然后提供者和利用计数对应于最高利用率计数。

这似乎应该工作。让我知道。

SELECT * 
FROM Member 
WHERE Member.UtilizationCounts = 
      (SELECT MAX(UtilizationCounts) 
      FROM Member m2 
      WHERE m2.MemberID = Member.MemberID) 
+0

是的!这工作!非常感谢!!!! – JK0124

1

对于Oracle,你需要使用一个名为rownum这样的原生柱:

SELECT Member, Provider, UtilizationCounts 
FROM (
    SELECT rownum, Member, Provider, UtilizationCounts 
    FROM myData 
    ORDER BY UtilizationCounts DESC 
) 
WHERE rownum <= 3 

看到这个文档:ROWNUM Pseudocolumn

+0

我正在研究Oracle 9.2,还有其他方法可以解决吗? – JK0124

1
select Member, Provider, UtilizationCounts 
from YourTable 
order by UtilizationCounts desc 

这将带来一切,从最高到最低排列。我不确定你是否想过滤掉某些东西。如果你只想要TOP 3,假设你正在使用SQL Server,你会去用:

select TOP 3 Member, Provider, UtilizationCounts 
from YourTable 
order by UtilizationCounts desc