【发布时间】:2021-06-09 18:48:44
【问题描述】:
我正在尝试在我的 DB::raw() 选择语句中订购一个特定的列,我需要为每一天订购项目并为每一天获取第一个项目,所以我最终会在 5 个月内得到 5 个结果但我的错误是
Illuminate\Database\QueryException with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax
我错过了什么?
GoogleAnalytics::where('event_category', 'Category')
->where('event_action', 'Action')
->whereDate('period_from', '>=', '2021-06-08')
->whereDate('period_to', '<=', '2021-06-08')
->select(DB::raw('DATE_FORMAT(created_at, "%Y-%m") as created_at'), DB::raw('FIRST(event_count ORDER BY created_at DESC ) as sessions'))
->groupByRaw('DATE_FORMAT(created_at, "%Y-%m")')
->orderBy('created_at', 'desc')
->get();
这里有更多上下文,每天可能有 100 个条目,因此每月可能有 3,000 个条目,我每天只需要获取一个条目,所以我最终得到 30 个条目,然后将这 30 个结果相加为那个月产生一个结果,所以我最终会在我返回的集合中得到 5 个项目,但现在我似乎无法让 DB::raw('FIRST(event_count ORDER BY created_at DESC ) as sessions') 获取该列,订购它并获得第一个结果.
【问题讨论】:
-
我认为
FIRST根本不是一个函数,因此出现了错误。一天中所有行的event_count列是否相同? -
event_count全天递增,并在第二天开始时重置为 0,它是从 Google Analytics 中提取的数据,我需要添加每月每一天的最后一个结果在一起。