【问题标题】:SQL - Get highest utilization by member by providerSQL - 通过提供者获得成员的最高利用率
【发布时间】:2011-10-20 03:01:15
【问题描述】:

我的数据看起来像这样:

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

【问题讨论】:

  • 您是否总是只需要 3 个结果?还是我们在您的示例中遗漏了什么?
  • 我认为以下答案不正确。我猜 TC 的意思是他需要为每个成员找到所有最高的提供者。因此,如果 234 有 3 个 BBB,值为 10,20,30,则查询应返回 234-BBB-30
  • @user194076 - 如果是这样,他还没有说清楚。也许在示例中添加更多结果可以帮助您获得更好的答案
  • 对不起,我说得不够清楚。我有几千条这样的记录。我通过按使用率排序的成员创建提供者数量的支点来检查结果。随机抽取大约 10 个成员,我能够测试以下答案是否有效。

标签: sql excel vba select


【解决方案1】:

在我看来,您想要的是为每个成员设置一行,然后提供与最高利用率计数相对应的提供程序和利用率计数。

看来这应该可行。告诉我。

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

【讨论】:

    【解决方案2】:
    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
    

    【讨论】:

      【解决方案3】:

      对于 Oracle,您需要使用名为 rownum 的原生列,如下所示:

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

      请参阅此文档:ROWNUM Pseudocolumn

      【讨论】:

      • 我正在开发 Oracle 9.2,还有其他方法吗?
      猜你喜欢
      • 2021-04-26
      • 1970-01-01
      • 1970-01-01
      • 2018-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-22
      相关资源
      最近更新 更多