如何基于另一列的值为该列派生值?

0ejtzxu1  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(241)

我有一个 projects 像下面这张table。有两个稍微不同的id列 idx 以及 idy –一个 idx 可以有多个 idy s(用于版本控制)。

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

我们的目标是整合使用,以便 idx ,结果将为:
use_count 是什么颜色 SUM(use_count) 对于相同的 idx 最新的 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 )

x6h2sr28

x6h2sr281#

你可以在下面试试-
演示

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

相关问题