1

我有一张projects像下面这样的桌子。有两个稍微不同的 id 列idx,并且idy–oneidx可以有多个idys(用于版本控制)。

  idx,     idy,         name,  use_count, usage_date
-----, -------, ------------, ----------, ----------
   x1,     x11,    x1 name 1,         10,          1
   x1,     x13,    x1 name 3,         10,          3
   x1,     x12,    x1 name 2,         10,          2
   x2,     x21,    x2 name 1,         10,          2
   x3,     x31,    x3 name 1,         10,          2

目标是巩固使用,使得对于 every idx,结果将具有:

  • 相同的use_countcolSUM(use_count)idx
  • 最新的usage_date
  • 最新usage_date对应的名称

此外,usage_date 必须在一定范围内,但希望这是微不足道的。

  idx,     idy,         name,  use_count, usage_date
-----, -------, ------------, ----------, ----------
   x1,     x13,    x1 name 3,         30,          3
   x2,     x21,    x2 name 1,         10,          2
   x3,     x31,    x3 name 1,         10,          2

到目前为止,我有

SELECT
  idx, idy, name,
  sum(use_count) as use_count,
  usage_date
FROM
  projects
WHERE
  usage_date <= 3
GROUP BY
  idx

..但无法弄清楚如何派生项目的最新名称(使用 id x1

4

1 回答 1

1

您可以尝试以下方式 -

演示

select X.idx,idy,name,X.use_count,usage_date from
(
select idx,sum(use_count) as use_count
from t
group by idx
)X inner join
(
select * from t a where usage_date = (select max(usage_date) from t b where a.idx=b.idx)
)Y on X.idx=Y.idx

输出:

idx idy   name       use_count  usage_date
x1  x13   x1 name 3     30            3
x2  x21   x2 name 1     10            2
x3  x31   x3 name 1     10            2
于 2020-06-24T07:23:10.617 回答