【发布时间】:2019-08-20 18:48:13
【问题描述】:
假设有三种材质类型,例如 ('COTTON', 'LEATHER', 'SILK'),我想获取具有这三种材质类型的dress_id。我也想给他们排名。
有人可以逐步解释如何做到这一点吗? 我列举了几个例子,但对我来说似乎都不清楚。
The output should look something like
DRESS_ID MATERIAL LAST_UPDATED_DATE RANK
111 COTTON 2019-08-29 1
111 SILK 2019-08-30 2
111 LEATHER 2019-08-31 3
222 COTTON 2019-08-29 1
222 SILK 2019-08-30 2
222 LEATHER 2019-08-31 3
222 LEATHER 2019-09-02 4
执行此查询时,我在 MYSQL 工作台中遇到错误。 错误代码:1305。FUNCTION rank 不存在。
SELECT dress_id,
rank() over(PARTITION BY dress_id, material ORDER by LAST_UPDATED_DATE asc) as rank
FROM dress_types;
【问题讨论】:
-
您需要 MySQL 8+ 才能使用窗口函数。您似乎使用的是旧版本。
-
SELECT VERSION()至少 MySQL 8,低于 8 的 MySQL 不支持 windows 功能.. -
@GordonLinoff - 是的,我知道我使用的版本是旧的(即 5.6.40-log):-) 但是如何在我的版本中实现这个逻辑?
标签: mysql sql window-functions dense-rank