我的数据库中有这样的数据
---------------------------------------------------------------
shopid | shopname | keyword | date | filename
---------------------------------------------------------------
1 | shop1 | A_key |2020-04-24| A
---------------------------------------------------------------
1 | shop1 | A_key |2020-04-24| B
---------------------------------------------------------------
1 | shop1 | B_key |2020-04-25| B
---------------------------------------------------------------
1 | shop1 | B_key |2020-04-25| C
---------------------------------------------------------------
2 | shop2 | C_key |2020-04-24| A
---------------------------------------------------------------
2 | shop2 | C_key |2020-04-24| B
---------------------------------------------------------------
3 | shop3 | D_key |2020-04-24| A
---------------------------------------------------------------
3 | shop3 | D_key |2020-04-24| B
---------------------------------------------------------------
3 | shop3 | E_key |2020-04-24| A
---------------------------------------------------------------
3 | shop3 | E_key |2020-04-25| B
---------------------------------------------------------------我想要的结果是来自最新文件名的最新数据
---------------------------------------------------------------
shopid | shopname | keyword | date | filename
---------------------------------------------------------------
1 | shop1 | A_key |2020-04-24| B
---------------------------------------------------------------
1 | shop1 | B_key |2020-04-25| C
---------------------------------------------------------------
2 | shop2 | C_key |2020-04-24| B
---------------------------------------------------------------
3 | shop3 | D_key |2020-04-24| B
---------------------------------------------------------------
3 | shop3 | E_key |2020-04-24| A
---------------------------------------------------------------
3 | shop3 | E_key |2020-04-25| B
---------------------------------------------------------------我想知道如何使用sql我的sql是
select *,rank() over (partition by date,keyword order by filename desc) rank
from table
order by date asc;发布于 2020-06-09 18:38:56
我想要的结果是最新文件名中的最新数据
我不完全理解这一点。下面返回每个商店的最新日期行:
select t.*
from (select t.*,
rank() over (partition by shopid order by date desc) as seqnum
from table t
) t
where seqnum = 1;发布于 2020-06-09 18:58:33
看起来您需要为每个商店/关键字/日期占一行,如果有多个行满足此要求,则使用文件名来决定哪个是最新的(C晚于B等)。
你可以使用分析器来分析它:
SELECT
x.*
FROM
(
SELECT
*,
row_number() over (partition by shopid,keyword,date order by filename desc) as rn
FROM
table
) x
WHERE
x.rn = 1但我敢说,您也可以使用标准分组:
SELECT
shopid, shopname, keyword, date, MAX(filename) as filename
FROM
table
GROUP BY
shopid, shopname, keyword, date如果您想要开始在中添加其他detial列,此方法将失败,但据我从您的Q中可以看出,没有任何
https://stackoverflow.com/questions/62280602
复制相似问题