SQL - Postgres - 返回最新日期的最大值

时间:2017-12-29 13:13:29

标签: sql postgresql greatest-n-per-group

这可能很简单,但我是SQL的新手,并且无法找到如何做到这一点。

我有以下表格:

Existing table in SQL

我的要求如下:

我需要,对于每个频率(每月和每周),选择最新的日期&它是该最新日期的最大版本。然后选择所有Dim&的记录。日期和版本的频率与先前选择的频率相同。

例如:将会有一个最新的日期&它的最高版本是每月'频率和频率单日期和它的每周最高版本'频率。现在对于所有Dim(在我们的例子中为A& B),只返回数据,其中Date&频率与之前相同。

所以总共会有4行:

  • Dim' A'每月
  • Dim' A'每周
  • Dim' B'每月
  • Dim' B'每周

有人可以帮帮我吗?

我尝试使用以下查询,但没有返回正确的值:

SELECT Dim, Frequency, Date, Version
               FROM   sample_tbl 
               WHERE  ( Frequency, Date, 
                        Version ) IN ( 
select Frequency, max(Date), max(Version)
from sample_tbl
group by 1
);

1 个答案:

答案 0 :(得分:2)

您可以使用带子查询的连接获取最大日期,然后使用最大版本

var spawnTime; 
var currentSpawnRate = 300;
function mainLoop(time){
     // start the spawning
     if(spawnTime === undefined){
         spawnTime = time + currentSpawnRate;
     }
     if(time > spawnTime){
         // code to spawn what you want
         // change the spawn rate depending on score

         // set the new spawn time
         spawnTime += spawnTime;
     }
     // render the scene

     // call next frame
     requestAnimationFrame(mainLoop);
}
// start the animation
requestAnimationFrame(mainLoop);