求和mysql两个字段的所有最大值

时间:2017-11-16 02:17:17

标签: mysql

我试图在表格中获得所有最大的价值。假设我有一个名为TableA的表,这里是属性 我的当前查询在下面只显示一行。所以我想得到的值是所有数据的所有最大值的总和。

SELECT GREATEST(MAX(Side-1-Length), MAX(Side-2-Length)) from TableA where DateEnd >='2017-11-10';

以下是我的TableA

+---------+--------------+--------------+--------------+
| Id      | Side-1-Length| Side-2-Length|    DateEnd   |
+---------+--------------+--------------+--------------+
| 64      |      22      |      21      | 2011-11-14   |
| 187     |      32      |      26      | 2011-11-15   |
| 325     |      12      |      18      | 2011-11-15   |
| 389     |      41      |      36      | 2011-11-16   |
| 495     |      62      |      41      | 2011-11-14   |
+---------+--------------+--------------+--------------+

我要显示的查询将输出类似下表

的内容
+---------+--------------+--------------+
| Id      | Side-Greates |    DateEnd   |
+---------+--------------+--------------+
| 64      |      22      | 2011-11-14   |
| 187     |      32      | 2011-11-15   |
| 325     |      18      | 2011-11-15   |
| 389     |      41      | 2011-11-16   |
| 495     |      62      | 2011-11-14   |
+---------+--------------+--------------+

并总结所有Side-Greates值

+---------+
| Sum     |
+---------+
| 175     |
+---------+

2 个答案:

答案 0 :(得分:0)

您可以尝试此查询。

我在查询中使用了CASE function()来检查哪一方更大,然后选择它。我还使用SUM() function来总结所有更大的值

SELECT 
SUM( CASE 
     WHEN Side-1-Length > Side-2-Length
     THEN Side-1-Length 
     ELSE Side-2-Length
     END
) as sum_of_all_greater_value 
FROM `TableA` 
WHERE DateEnd >='2017-11-10';

答案 1 :(得分:0)

这是另一种选择,使用IF(expr1,expr2,expr3),然后选择Sum()

SELECT
    SUM(IF(Side-1-Length > Side-2-Length, Side-1-Length, Side-2-Length))
FROM TableA
WHERE DateEnd >= '2017-11-10';