Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 按月份获取特定行的排名_Mysql_Sql - Fatal编程技术网

Mysql 按月份获取特定行的排名

Mysql 按月份获取特定行的排名,mysql,sql,Mysql,Sql,我如何查询一行的排名,与该行在同一年的同一个月内与其他行相比的投票数有关 +----+---------+--------+---------------------+ | id | post_id | votes | date | +----+---------+--------+---------------------+ | 1 | 1 | 10342 | 2015-04-29 04:40:51 | | 2 | 2 | 94

我如何查询一行的排名,与该行在同一年的同一个月内与其他行相比的投票数有关

+----+---------+--------+---------------------+
| id | post_id | votes  |        date         |
+----+---------+--------+---------------------+
|  1 |       1 |  10342 | 2015-04-29 04:40:51 |
|  2 |       2 |   9432 | 2015-04-17 22:37:53 |
| 3  |      3  | 33064  | 2015-05-17 22:37:17 |
| 4  |      4  | 32741  | 2015-05-17 22:37:25 |
| 5  |      5  | 30362  | 2015-05-17 22:37:31 |
| 6  |      6  | 15321  | 2015-06-28 00:33:20 |
| 7  |      1  |  4356  | 2015-06-28 00:19:30 |
+----+---------+--------+---------------------+
例如,如果我想查找每个月post_id 1的排名,它应该返回如下内容:

+----+------+---------+-------+---------------------+
| id | rank | post_id | votes |        date         |
+----+------+---------+-------+---------------------+
|  1 |    1 |       1 | 10342 | 2015-04-29 04:40:51 |
| 7  |    2 |      1  | 4356  | 2015-06-28 00:19:30 |
+----+------+---------+-------+---------------------+
这是因为post_id 1在一年中的第4个月获得了最多的选票,但在一年中的第6个月获得了第二高的票数

我如何进行此查询

SELECT YEAR(t1.date) AS year, MONTH(t1.date) AS month, SUM(IF(t1.votes >= t2.votes, 1, 0)) AS rank
FROM YourTable AS t1
JOIN YourTable AS t2 ON YEAR(t1.date) = YEAR(t2.date) AND MONTH(t1.date) = MONTH(t2.date)
WHERE t2.post_id = 1
GROUP BY year, month

您可以为此使用行编号。请看这里: