【发布时间】:2020-06-27 02:47:32
【问题描述】:
我在 MySQL 中有一个名为“test”的下表。
data value
ABC>1234 5678
ABC>2345 2435
ABC>3456 4567
DEF>4567 5656
DEF>5678 7535
DEF>6789 7983
GHI>7890 6748
GHI>8901 2973
GHI>8901 3024
现在我希望根据第一个关键字对表进行分区,直到数据字段中大于符号 (>) 并希望获得 RANK()。
为了实现这一点,我正在运行下面的查询。
SELECT *, RANK() OVER (PARTITION BY `data`) FROM `test`
运行上述查询后,我得到以下输出。
data value RANK()
ABC>1234 5678 1
ABC>2345 2435 1
ABC>3456 4567 1
DEF>4567 5656 1
DEF>5678 7535 1
DEF>6789 7983 1
GHI>7890 6748 1
GHI>8901 2973 1
GHI>8901 3024 2
但所需的输出应该如下所述。
data value RANK()
ABC>1234 5678 1
ABC>2345 2435 2
ABC>3456 4567 3
DEF>4567 5656 1
DEF>5678 7535 2
DEF>6789 7983 3
GHI>7890 6748 1
GHI>8901 2973 2
GHI>8901 3024 3
请帮助获得所需的输出。
【问题讨论】:
-
您按什么值排序以获得所需的排名?
标签: mysql sql mariadb rank partition-by