【问题标题】:SQL - Get top 5 values for each groupSQL - 获取每个组的前 5 个值
【发布时间】:2013-06-24 16:28:57
【问题描述】:

我真的很想从 SQL Sybase 表中获得以下查询的帮助。 我想看看任何给定日期的每个 PortfolioID 的前 5 个 StressResults 对于任何投资组合,不同的StressTest 可能存在重复的StressResults

如果有任何意见,我将不胜感激。

StressResultsTable 表中有四列 (PortfolioID, Date, StressTest, StressResult)StressScenariosTable 表中有两列 (StressTest, Limits)

这是我的示例查询,即宇宙。

SELECT a.PortfolioID, a.Date, a.StressTest, a.StressResult from StressResultsTable a    join StressScenariosTable b on a.StressTest = b.StressTest
 WHERE a.PortfolioID IN ('Portfolio A', 'Portfolio B') 
   AND a.StressResult <> 0 AND a.Date >= '2013-06-20' and b.Limits = 1
 ORDER BY a.PortfolioID, a.Date, a.StressResult 

【问题讨论】:

    标签: sql sybase


    【解决方案1】:

    试试下面的代码:

    select a.PortfolioID, a.Date, a.StressTest, a.StressResult from StressResultsTable a 
    where
        (
            select count(b.*) from from StressResultsTable b
            WHERE a.PortfolioID=b.PortfolioID
            and a.StressResult=b.StressResult
        ) <= 5
    and 
    a.PortfolioID IN ('Portfolio A', 'Portfolio B') 
    AND a.StressResult <> 0 AND a.Date >= '2013-06-20'

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-06
      • 2013-07-13
      • 2011-06-01
      • 1970-01-01
      • 2022-11-17
      • 1970-01-01
      • 2016-01-23
      • 1970-01-01
      相关资源
      最近更新 更多