php - 将一列除以从子查询创建的另一列
问题描述
我有这个查询 -
$employees = Employee::where('user_id', $user->id)->withCount([
'answers as questions_received' => function ($query) use($date) {
$query->where('created_at', '>=', $date);
},
'answers as correct' => function ($query) use($date) {
$query->where('correct', 1)->where('created_at', '>=', $date);
}
]);
$employees = $employees
->orderBy('answered', 'desc')
->orderBy('correct', 'desc')
->get();
我想做这样的事情 -((correct/questions_received) * 100) as percentage
但不明白该怎么做。:)
解决方案
假设这是表格布局,并且answered
和correct
列是值为 0 和 1 的数据类型(例如tinyint(1)
Laravel 用于 MySQL 的布尔值的数据类型)。
Employees
+----+---------+
| id | user_id |
+----+---------+
Answers
+----+-------------+----------+---------+------------+
| id | employee_id | answered | correct | created_at |
+----+-------------+----------+---------+------------+
这似乎可以解决问题:
$employees = Employee::select('E.*')
->selectRaw('COUNT(*) AS questions_received')
->selectRaw('SUM(correct) AS correct')
->selectRaw('SUM(correct) / COUNT(*) * 100 AS percentage')
->from('employees AS E')
->join('answers AS A', 'E.id', '=', 'A.employee_id')
->where('A.created_at', '>=', $date)
->where('E.user_id', $user->id)
->groupBy('E.id')
->get();
推荐阅读
- html - 如何更改具有空值的选择字段的颜色?
- r - 颜色和标签仅两个变量并排除其他变量
- printjs - 使用 printjs 库时如何提供自定义名称
- c# - Photon Unity 回合制多人骰子游戏并同步视图
- java - 使用 jaxb/MOXy 将 java 类映射到要使用 Feign 发送的 XML,有没有办法将 Feign 设置为使用自定义 JAXBContextFactory?
- c++ - 如何从 Objective-C 将数组发送到 C++ 函数
- python - Python:“GridSearchCV”对象没有属性“coef_”
- java - 更改 Keycloak 中的默认注册行为
- python - 在 SQLite 中批量复制表
- keycloak - 使用 ORCiD 作为具有 keycloak 的身份提供者(每个人都得到错误:数值 (2225265999) 超出 int 范围)