ordenar por grupo conjunto para resolver el problema de la clasificación

No hablaré de grupo único ni de orden único aquí, pero a menudo se usan juntos para completar la función de agrupar y ordenar.

$campo = 'id,uid,course_id,puntuación como promedio,ec_id,examid'; 
$resultadoSql = StuExam::dónde($dónde)->campo($campo)->orden(['puntuación' => 'desc'])->límite(100000)->buildSql(); 
$resultado = Db::table($resultSql . 'stu_exam') 
    ->field( 'id,uid,course_id, avg,ec_id,examid')->order(['avg' => 'desc']) - 
    > grupo('uid')->fetchSql()->select();dd($resultado);

La declaración SQL se ve así:

SELECCIONE `id`,`uid`,`course_id`,`avg`,`ec_id`,`examid` FROM ( SELECCIONE `id`,`uid`,`course_id`, puntuación como promedio,`ec_id`,`examid` DESDE `edu_stu_exam` DONDE `course_id` = 45 Y `type` = 82 ORDENAR POR `score` DESC LIMIT 100000 )stu_exam GRUPO POR `uid` ORDENAR POR `avg` DESC

Hasta ahora hemos completado la función: varios usuarios envían datos varias veces, solo toman el valor máximo de cada usuario y los organizan en orden inverso según las puntuaciones.

Combinado con array_slice($arr,0,$num); (intercepta y muestra la matriz bidimensional) está lista una tabla de clasificación completa

¡Resumir! ! ! Las columnas ordenadas por deben aparecer en la cláusula agrupar por. ¡Esta es una verdad muy obvia! ! !

Supongo que te gusta

Origin blog.csdn.net/qq_58778333/article/details/130320757
Recomendado
Clasificación