我试着显示每月工作时间的前5名。
我有以下疑问:
SELECT
concat(m.firstname, " ",m.lastname) AS name,
SEC_TO_TIME(SUM(TIME_TO_SEC(TIMEDIFF(pl.end_activity,pl.start_activity)))) AS activity,
month(start_activity) AS month,
year(start_activity) AS year
FROM
log AS pl
INNER JOIN
employee AS m
ON
m.employee = pl.employee
GROUP BY
name,
year,
month,
ORDER BY
year,
month,
activity
我试过:限制0,5位它只给我所有的前5条记录。如何显示每月订购的5张记录?
1条答案
按热度按时间6gpjuf901#
在mysql 8.0.2及更高版本中,我们可以使用窗口函数。我们可以利用
Row_Number()
窗口函数,用于确定年和月的串联表达式的分区内的行号。分区内的排序是根据activity
.然后我们可以使用这个结果集作为派生表,并考虑行数最多为5。这将给我们5行每月,有顶部
activity
价值观。