【问题标题】:need quick small help in mariadb stored procedure query-在 mariadb 存储过程查询中需要快速的小帮助-
【发布时间】:2020-12-06 10:15:43
【问题描述】:

我在 mariadb 存储过程查询方面需要帮助-

需要得到(COUNT(ID)*AvgWeight) from table A group by AvgWeight的总和

不使用临时插入

我有IDavgweight

1 55
2 55
3 45
4 45
5 45
6 60
7 60

所以我需要 sum(2into55+3into45+2into60) 作为单个值

【问题讨论】:

    标签: mysql stored-procedures count sum mariadb


    【解决方案1】:

    您可以使用两个级别的聚合:

    select sum(avgweight * cnt) res
    from (
        select avgweight, count(*) cnt
        from mytable
        group by avgweight
    ) t
    

    【讨论】:

    • 太棒了!现在我需要用这个单一值更新另一个表,但 mytable 日期需要小于等于第二个表日期,所以更新 secondtable set totalavgweight=select sum(avgweight * cnt) res from (select avgweight, count(*) cnt from mytable其中 mytable.date
    • 但是当我尝试使用来自 secondtable 的日期的 where 子句时,它无法识别它
    【解决方案2】:

    您可以对子查询执行查询。您描述的所需子查询看起来像这样,我想:

    SELECT COUNT(*) AS count, AvgWeight FROM A GROUP BY AvgWeight
    

    我不太确定您到底想要什么,但我假设 AvgWeight 的总和?您应该能够根据您的需要调整以下查询:

    SELECT SUM(AvgWeight)
    FROM (SELECT COUNT(*) AS count, AvgWeight FROM A GROUP BY AvgWeight)
    

    【讨论】:

    • 它在 mariadb 中给了我语法错误。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多