为每个类别选择所有项目,但仅为每个类别的最新日期选择

6tqwzwtp  于 2021-08-13  发布在  Java
关注(0)|答案(2)|浏览(423)

表模式非常简单 item , category 以及 date . 我想查询每个类别的所有项目,但只为每个类别的最大日期。

ig9co6j1

ig9co6j11#

我想这正是你想要的:

select t.*
from (select t.*,
             max(date) over (partition by category) as max_date
      from t
     ) t
where date = max_date;
gkl3eglg

gkl3eglg2#

下面是bigquery标准sql(和bigquery样式)


# standardSQL

SELECT AS VALUE ARRAY_AGG(t ORDER BY date DESC LIMIT 1)[OFFSET(0)]
FROM `project.dataset.table` t
GROUP BY category

我有多个条目有完全相同的最大日期,所有需要返回的情况
考虑以下版本:


# standardSQL

SELECT t.* FROM (
  SELECT ARRAY_CONCAT_AGG(arr ORDER BY `date` DESC LIMIT 1) arr FROM (
    SELECT category, `date`, ARRAY_AGG(t) arr
    FROM `project.dataset.table` t
    GROUP BY category, `date`
  ) GROUP BY category 
), UNNEST(arr) t

相关问题