mysql - 在 sql 脚本中一起使用 sum 和 max

标签 mysql sql database

我已经更新了查询,但现在出现的错误是:您的 SQL 语法有错误;查看与您的 MySQL 服务器版本对应的手册,了解在 'AS max_parameter_value 附近使用的正确语法 来自第 7 行的 tcs.parameter_values_archieve

    SELECT sum(max_pv) SUM_MAX,
       sum(min_pv) SUM_MIN,
       sum(max_pv) - sum(min_pv) DIFF
  FROM (SELECT t.parameter_value, t.created_date, t.meter_id, parameter_id
          FROM tcs.parameter_values_archieve t
         INNER JOIN (SELECT meter_id,
                           MAX(parameter_value) max_pv AS max_parameter_value
                      FROM tcs.parameter_values_archieve
                     where created_date like '2013-01-01%'
                       and created_date <= '2013-01-01 20:00:00'
                       and meter_id between 1 and 16
                       and parameter_id = 1
                     GROUP BY meter_id) q ON t.meter_id = q.meter_id
                                         AND t.parameter_value =
                                             q.max_parameter_value) MAX_TBL,
       (SELECT t.parameter_value, t.created_date, t.meter_id, parameter_id
          FROM tcs.parameter_values_archieve t
         INNER JOIN (SELECT meter_id,
                           MIN(parameter_value) min_pv AS max_parameter_value
                      FROM tcs.parameter_values_archieve
                     where created_date like '2013-01-01%'
                       and created_date >= '2013-01-01 20:00:00'
                       and meter_id between 1 and 16
                       and parameter_id = 1
                     GROUP BY meter_id) q ON t.meter_id = q.meter_id
                                         AND t.parameter_value =
                                             q.max_parameter_value) MIN_TBL;

这是我为查找最大值而编写的查询。现在我必须对所有 max(parameter_value) 求和。同样,我必须找到 min(parameter_value) for created_date like '2013-01-01%' and created_date >='2013-01-01 08:00:00' 并减去这两个值。

怎么做?我正在使用 mysql。

如果我像 foll 一样单独找到总和,我会得到一个总和,但是当我执行“select sum(min_parameter_value)”时它会抛出字段未知错误。这个总和是否正确?我有疑问?

SELECT sum(parameter_value) from

(SELECT t.parameter_value,t.created_date,t.meter_id,parameter_id
    FROM tcs.parameter_values_archieve t
        INNER JOIN (SELECT meter_id, min(parameter_value) AS min_parameter_value
                        FROM tcs.parameter_values_archieve where created_date like'2013-01-07%'and created_date >='2013-01-07 08:00:00'and meter_id between 1 and 16 and parameter_id =1
                        GROUP BY meter_id) q
            ON t.meter_id = q.meter_id
                AND t.parameter_value = q.min_parameter_value)min_tbl;

最佳答案

试试这个,

SELECT sum(max_pv) SUM_MAX,
       sum(min_pv) SUM_MIN,
       sum(max_pv) - sum(min_pv) DIFF
  FROM (SELECT t.parameter_value, t.created_date, t.meter_id, parameter_id
          FROM tcs.parameter_values_archieve t
         INNER JOIN (SELECT meter_id,
                           MAX(parameter_value) max_pv AS max_parameter_value
                      FROM tcs.parameter_values_archieve
                     where created_date like '2013-01-01%'
                       and created_date <= '2013-01-01 20:00:00'
                       and meter_id between 1 and 16
                       and parameter_id = 1
                     GROUP BY meter_id) q ON t.meter_id = q.meter_id
                                         AND t.parameter_value =
                                             q.max_parameter_value) MAX_TBL,
       (SELECT t.parameter_value, t.created_date, t.meter_id, parameter_id
          FROM tcs.parameter_values_archieve t
         INNER JOIN (SELECT meter_id,
                           MIN(parameter_value) min_pv AS max_parameter_value
                      FROM tcs.parameter_values_archieve
                     where created_date like '2013-01-01%'
                       and created_date >= '2013-01-01 20:00:00'
                       and meter_id between 1 and 16
                       and parameter_id = 1
                     GROUP BY meter_id) q ON t.meter_id = q.meter_id
                                         AND t.parameter_value =
                                             q.max_parameter_value) MIN_TBL;

关于mysql - 在 sql 脚本中一起使用 sum 和 max,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14272402/

相关文章:

python - SQLAlchemy - 带连接的复杂子查询

mysql - Joomla首次安装错误表不存在

MySQL 检查空白或空值

C#:应用程序中的内部文件数据库

Moodle 上类(class)注册的 SQL 查询

php - 我的 web 应用程序的自定义 OAuth 流程,其中 oAuthClient 是我的,oAuthServer 也是我在 YII2 中的

php - 如何更新特定 ID 以接受或拒绝用户

c# - 将带有 FlagsAttribute 的枚举解析为 SqlParameter

MYSQL 选择具有所有必需交叉引用值的行

c# - c 从函数中快速返回对象