【问题标题】:Compute 2 subqueries then group by date - mysql计算 2 个子查询,然后按日期分组 - mysql
【发布时间】:2020-08-30 09:58:50
【问题描述】:

我有这张桌子

我想先做子查询,然后按日期分组添加它们

预期结果应该是这样的:

正在运行此查询

(
SELECT DATE_FORMAT(dd1.modified_datetime,'%Y-%m-%d') as date, (v1+v2) as value FROM
    (SELECT modified_datetime, Sum(data->"$.amount") as v1
        FROM transactions
        GROUP BY modified_datetime) as dd1 ,            
    (SELECT modified_datetime, MAX(data->"$.amount") as v2
        FROM transactions
        GROUP BY modified_datetime) as dd2

    GROUP BY dd1.modified_datetime, value
)

得到这个结果

感谢您的帮助

【问题讨论】:

    标签: mysql sql database group-by subquery


    【解决方案1】:

    如果我没听错的话,你可以使用union all 和聚合:

    select date_format(dt, '%Y-%m-%d') dt_day, sum(amount) value
    from (
        select modified_datetime dt, data ->> '$.amount' amount from transactions
        union all 
        select created_datetime, data ->> '$.amount' from transactions
    ) t
    group by dt_day
    order by dt_day
    

    【讨论】:

    • 它的动态查询,我可能必须执行 3 或 4 个子查询,然后在它们之间执行操作 -> v1+v2 - v3 * v4 例如。所以我需要先计算子查询,然后从公式中进行运算,所以它并不总是总和
    【解决方案2】:

    在子查询和下一个子查询之间使用JOIN

    (SELECT modified_datetime, Sum(data->"$.amount") as v1
        FROM transactions
        GROUP BY modified_datetime) as dd1 JOIN
    (SELECT modified_datetime, MAX(data->"$.amount") as v2
        FROM transactions
        GROUP BY modified_datetime) as dd2 ON dd1.modified_datetime=dd2.modified_datetime
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-14
      • 1970-01-01
      相关资源
      最近更新 更多