本文咱們使用mysql實(shí)現(xiàn)開(kāi)窗函數(shù)row_number() over (partition by xxx,xxx order by xxx),廢話不多說(shuō),直接開(kāi)干
準(zhǔn)備數(shù)據(jù)
select * from test_biz_policy_policy;
| platform_id(平臺(tái)id) | publish_time(政策發(fā)布時(shí)間) | policy_name(政策名稱) |
|---|---|---|
| 2 | 2019-04-01 15:11:06 | test0 |
| 2 | 2019-04-01 19:11:06 | test9 |
| 2 | 2019-04-01 19:11:06 | test8 |
| 2 | 2019-04-01 18:11:06 | test7 |
| 2 | 2019-04-01 15:11:06 | test1 |
| 2 | 2019-04-01 15:11:06 | test2 |
| 2 | 2019-04-01 16:11:06 | test3 |
| 2 | 2019-04-01 16:11:06 | test4 |
| 2 | 2019-04-01 16:11:06 | test5 |
| 2 | 2019-04-01 17:11:06 | test6 |
| 8 | 2019-04-02 19:17:31 | fengyu |
| 8 | 2019-04-02 19:17:31 | 新建政策1111111 |
| 8 | 2019-04-02 19:17:31 | 1218測(cè)試 |
| 8 | 2019-04-02 19:17:31 | xxx |
| 8 | 2019-04-02 19:17:31 | ccc |
| 8 | 2019-04-02 19:17:31 | 測(cè)試114 |
| 8 | 2019-04-02 19:17:31 | 測(cè)試mmm |
| 8 | 2019-04-02 19:17:31 | k k k k k k k |
| 8 | 2019-04-02 19:17:31 | k k k k k k k明明 |
| 8 | 2019-04-02 19:17:31 | ceshi111 |
需求
簡(jiǎn)而言之,就是以「平臺(tái)id」,「政策發(fā)布時(shí)間」分組,根據(jù)「政策名稱」進(jìn)行排序,取政策前三名。
代碼
SELECT
t.platform_id,
t.publish_time,
t.policy_name,
t.rank_no
FROM
(
SELECT
a.platform_id,
a.publish_time,
a.policy_name,
IF
(
@str1 = a.platform_id
AND @str2 = a.publish_time,
@rank := @rank + 1,
@rank := 1
) AS rank_no,
@str1 := a.platform_id,
@str2 := a.publish_time
FROM
(
SELECT
platform_id,
publish_time,
policy_name
FROM
test_biz_policy_policy
ORDER BY
platform_id,
publish_time,
policy_name ASC
) a,
(
SELECT
@str1 := 0,
@str2 := NULL,
@rank := 0
) tmp
) t
WHERE
t.rank_no <= 5
結(jié)果
| platform_id(平臺(tái)id) | publish_time(政策發(fā)布時(shí)間) | policy_name(政策名稱) |
|---|---|---|
| 2 | 2019-04-01 15:11:06 | test0 |
| 2 | 2019-04-01 15:11:06 | test1 |
| 2 | 2019-04-01 15:11:06 | test2 |
| 2 | 2019-04-01 16:11:06 | test3 |
| 2 | 2019-04-01 16:11:06 | test4 |
| 2 | 2019-04-01 16:11:06 | test5 |
| 2 | 2019-04-01 17:11:06 | test6 |
| 2 | 2019-04-01 18:11:06 | test7 |
| 2 | 2019-04-01 19:11:06 | test8 |
| 2 | 2019-04-01 19:11:06 | test9 |
| 8 | 2019-04-02 19:17:31 | 1218測(cè)試 |
| 8 | 2019-04-02 19:17:31 | ccc |
| 8 | 2019-04-02 19:17:31 | ceshi111 |
| 8 | 2019-04-02 19:17:31 | fengyu |
| 8 | 2019-04-02 19:17:31 | k k k k k k k |
總結(jié)
從上面的結(jié)果看來(lái),需求已實(shí)現(xiàn)。