【问题标题】:MySQL select and calculate value from multiple columnsMySQL 从多列中选择和计算值
【发布时间】:2012-09-07 19:32:19
【问题描述】:

我正在尝试创建一个 mysql 选择查询,该查询根据其他两个字段计算一个值。

这是我的查询,

SELECT request_id, (
unit_cost * quantity
) AS claim_value
FROM  `xx_non_part_usage` 
WHERE request_id = request_id
GROUP BY request_id

上面的查询只带回其中一行的 total_value。

例如 - 这是一些示例数据,

ID      REQUEST_ID      QUANTITY        UNIT_VALUE
1       10001           2.0             3.00
2       10001           1.0             19.00
3       10003           0.5             18.00
4       10001           10.0            12.00
5       10003           0.75            6.76
6       10002           9.0             3.20
7       10001           0.10            13.80
8       10001           1.0             90.99
9       10004           6.75            3.00
10      10009           3.23            87.00 

如您所见,有几行 REQUEST_ID '10001'。查询需要做的是 REQUEST_ID * QUANTITY 然后将它们分组,因此它只返回最终价值价格(将乘和的所有结果相加 (REQUEST_ID * QUANTITY)。

这是我希望得到的预期结果(REQUEST_ID 10003 上的不同示例,

REQUEST_ID      TOTAL_VALUE
10003           14.07
10004           20.75
...
...

提前谢谢你。

【问题讨论】:

  • 删除“WHERE”会产生相同的结果。
  • @verheesj - 如果回答了您的问题,您应该将答案标记为已接受。

标签: mysql select


【解决方案1】:

为什么要使用“where”子句?

mysql> select * from test;
+------------+------------+----------+
| request_id | unit_value | quantity |
+------------+------------+----------+
|          1 |          3 |        2 |
|          1 |         19 |        1 |
|          2 |       6.76 |     0.75 |
|          2 |         18 |      0.5 |
+------------+------------+----------+
4 rows in set (0.00 sec)

mysql> SELECT request_id, sum(unit_value * quantity) as x from test group by request_id;
+------------+--------------------+
| request_id | x                  |
+------------+--------------------+
|          1 |                 25 |
|          2 | 14.070000171661377 |
+------------+--------------------+
2 rows in set (0.00 sec)

【讨论】:

  • 我删除了 WHERE 并添加了 SUM。这非常有效。感谢您的帮助!非常感谢
【解决方案2】:
ID REQUEST_ID CLAIM_VALUE
3 10003 9.00
5 10003 5.07

你想使用SUM

SELECT 
  request_id,
  SUM(unit_cost * quantity) AS claim_value
FROM  `xx_non_part_usage` 
WHERE request_id = request_id
GROUP BY request_id

除非您使用聚合函数,否则不应使用 GROUP BY

【讨论】:

    猜你喜欢
    • 2016-07-18
    • 1970-01-01
    • 1970-01-01
    • 2018-01-08
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    • 1970-01-01
    • 2016-10-03
    相关资源
    最近更新 更多