【发布时间】:2017-01-06 11:09:44
【问题描述】:
我有一张如下所示的表格:
id | age | date
----|-----|--------------------
1 | 18 | 2016-07-1 00:00:00
2 | 20 | 2016-07-1 00:00:00
3 | 20 | 2016-07-1 00:00:00
4 | 22 | 2016-08-1 00:00:00
5 | 22 | 2016-08-1 00:00:00
6 | 30 | 2016-08-1 00:00:00
7 | 25 | 2016-09-1 00:00:00
我需要得到每个月和年的最常见年龄。
到目前为止我有这个查询:
$ages = User::selectRaw('age, MONTH(date) as month, YEAR(date) as year, count(*) as count')
->groupBy(['age', 'month', 'year'])
->orderBy('year', 'asc')
->orderBy('month', 'asc')
->get();
这只会获取每个月 + 年的每个年龄的计数。我需要看起来像这样的东西:
[
{
"age": 20,
"month": 7,
"year": 2016,
},
{
"age": 22,
"month": 8,
"year": 2016,
},
{
"age": 25,
"month": 9,
"year": 2016,
}
]
即2016 年 7 月(月 == 7)有两个 20 岁和一个 18 岁,所以 20 岁是最常见的年龄。 2016 年 8 月,最常见的是 22,依此类推...
对此有什么好的查询?谢谢。
【问题讨论】:
标签: mysql sql database laravel eloquent