有人可以指出我的问题的正确解决方案吗? 我有一张 table -
+------+-------+--------------------------------------+
| id | num | date |
+------+-------+--------------------------------------+
| a | 1 | 2011-08-12T20:17:46.384Z |
| a | 1 | 2011-08-12T20:18:46.384Z |
| a | 2 | 2011-08-12T20:19:46.384Z |
| a | 2 | 2011-09-12T20:17:46.384Z |
| c | 3 | 2011-09-12T20:18:46.384Z |
+------+-------+--------------------------------------+
现在对于给定的日期范围,我想为“id”值获取列“num”中出现次数最多的值。
范围(2011-08-12T00:00:00.000Z 到 2011-08-12T23:59:00.000Z)的结果应该是
| a | 1 | 090518 |
基本上,我想要与给定日期时间范围内的 id 对应的列中出现次数最多的值。
我将使用 PostgreSQL。
最佳答案
这应该返回这样的东西:
| id | num | occurrences |
select id,num,count(num) as [occurrences]
from MyTable
where id = 'a' /* Given id */
and [date] >= '2011-08-12T00:00:00.000Z' AND [date] <= '2011-08-12T23:59:00.000Z' /* Given Range */
group by id,num
order by [occurrences] DESC
关于SQL:选择最常出现的对应于不同列的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50334161/