php - 如何在 SQL 中将列值与 sum 函数进行比较?
问题描述
我有三张桌子:
- mls_category
- points_martix
- mls_entry
我的第一个表(mls_category)如下所示:
*--------------------------------*
| cat_no | store_id | cat_value |
*--------------------------------*
| 10 | 101 | 1 |
| 11 | 101 | 4 |
*--------------------------------*
我的第二张表(points_martix)如下所示:
*----------------------------------------------------*
| pm_no | store_id | value_per_point | max_distance |
*----------------------------------------------------*
| 1 | 101 | 1 | 10 |
| 2 | 101 | 2 | 50 |
| 3 | 101 | 3 | 80 |
*----------------------------------------------------*
我的第三个表(mls_entry)如下所示:
*-------------------------------------------*
| user_id | category | distance | status |
*-------------------------------------------*
| 1 | 10 | 20 | approved |
| 1 | 10 | 30 | approved |
| 1 | 11 | 40 | approved |
*-------------------------------------------*
我正在使用以下查询来显示某些条件下的距离总和:
SELECT SUM(t1.totald/c.cat_value)
AS total_distance
FROM mls_category c
JOIN
(SELECT SUM(distance) totald, user_id, category
FROM mls_entry
WHERE user_id = 1
AND status = 'approved'
GROUP BY user_id, category) t1
ON c.cat_no = t1.category
这给了我总距离60的总和,这是我想要的。
现在,我想包含第三个表(points_matrix)并想比较我sum(60)
的小于或等于 80(max_distance),那么我的新值将是60*3=180
.
因此,假设我的总和为 10 ,那么我的新值将是10*1=10
,如果我的总和为25,那么我的新值将根据点矩阵25*2=50
。
解决方案
你可以用MIN()
它来计算value_per_point
你需要的东西,整个sql是这样的:
SELECT MIN(b.value_per_point) * d.total_distance FROM points_matrix b
JOIN
(
SELECT store_id, sum(t1.totald/c.cat_value) as total_distance FROM mls_category c
JOIN
(
SELECT SUM(distance) totald, user_id, category FROM mls_entry
WHERE user_id= 1 AND status = 'approved' GROUP BY user_id, category
) t1 ON c.cat_no = t1.category
) d ON b.store_id = d.store_id AND b.max_distance >= d.total_distance
推荐阅读
- python - gettest 翻译或安装找不到语言
- android - Android 错误:未解决的参考:utils
- java - Oracle JDBC 无法以 sysdba 用户身份连接
- java - Qt on Android Runtime 错误:获取资源号 0x00000000 的包时包标识符无效
- angular - Angular 仅处理未处理的错误响应
- database - 处理过时但不可删除的列
- azure - 我可以通过使用测试程序集在构建管道中执行自动化测试来更新测试计划吗
- python - 从延迟加载页面中抓取数据
- python - 通过逻辑规则有效地用 1-dim np.darrays 替换 np.darray 值?
- python - 如何解析从masscan导出的具有多个JSON对象的文件?