MariaDB:显示每个成员的前5个结果(在透视表中)

5sxhfpxr  于 2023-03-08  发布在  其他
关注(0)|答案(1)|浏览(131)

我的MariaDB数据库中有一个表,如下所示(简化示例);
| 日期|成员|级别|
| - ------|- ------|- ------|
| 二○二三年三月一日|保罗|十个|
| 二○二三年二月三日|保罗|六个|
| 二○二三年三月三日|保罗|九|
| 二○二三年三月四日|保罗|九|
| 二○二三年三月五日|保罗|六个|
| 二○二三年三月六日|保罗|五个|
| 二○二三年三月七日|保罗|三个|
| 二○二三年二月三日|莎拉|八个|
| 二○二三年三月三日|莎拉|九|
等等。
我想做的是在透视表中显示每个成员的前5个等级(最好按日期排序)。如果结果少于5个,我希望其余的显示为0或NULL(任意一个都可以)。等级+日期的每个组合应视为单独的结果。在上表中,Paul的前5个等级应为10、9、9、6、6
为了说明,期望的结果是:
| 成员|一级|二级|三级|四级|五年级|
| - ------|- ------|- ------|- ------|- ------|- ------|
| 保罗|十个|六个|九|九|六个|
| 莎拉|八个|九|无|无|无|
我似乎不知道如何做到这一点。我知道如何创建透视表,但我以前创建的透视表是按某个其他字段(如月份)分组的。我不太确定如何对前5名的结果进行此操作。当然,当它们按成绩获得日期的顺序排列时,就不知道了。

sq1bmfud

sq1bmfud1#

我所做的就是

SELECT * FROM table ORDER BY Grade DESC;

这将表按降序排序,然后存储在一个变量中,然后在创建计数器变量的同时进行迭代

i=1;
while(r.next()&&i<=5)
{
   .....
   i++;
}

相关问题