【问题标题】:Creat a multiple mathematic statement in a case loop mysql在案例循环mysql中创建多个数学语句
【发布时间】:2013-11-06 07:23:31
【问题描述】:

我想创建一个计算多重数学公式的语句。然后转换数据。

select szallito_nev, extract(month from beerkezes_datuma) as honap,
((sum(levonas_nedvesseg_miatt)/sum(merlegelt_suly))*100) as sdf
from 2013_backup GROUP BY szallito_nev,month(beerkezes_datuma);
Company name                   month      value
A.K.S.D. VÁROSGAZDÁLKODÁSI KFT  1   1.542938202451533
A.K.S.D. VÁROSGAZDÁLKODÁSI KFT  2   2.085091455775495
A.K.S.D. VÁROSGAZDÁLKODÁSI KFT  3   3.7353360231161536
A.K.S.D. VÁROSGAZDÁLKODÁSI KFT  4   1.979149061085067

如果我这样做它效果很好,但它会垂直显示摘要,我想将其转换为水平,所以我尝试了这个:

select szallito_nev,
(case extract(month from beerkezes_datuma) when '1' then ((sum(levonas_nedvesseg_miatt)/sum(merlegelt_suly))*100)   else 0 end) as 'H1'
from 2013_backup group by szallito_nev with rollup
company name                         Januar
A.K.S.D. VÁROSGAZDÁLKODÁSI KFT         0
A.S.A. MAGYARORSZÁG KFT.               0
ASCO HUNGARIA KFT                      0

但在这之后我得到了不同的结果。

【问题讨论】:

    标签: mysql pivot case summary


    【解决方案1】:

    我会告诉你一个想法-

    SELECT
      szallito_nev,
      SUM(IF(month = 1, VALUE, NULL)) Jan,
      SUM(IF(month = 2, VALUE, NULL)) Feb,
      SUM(IF(month = 3, VALUE, NULL)) Mar,
      SUM(IF(month = 4, VALUE, NULL)) Apr
    FROM
      -- this is a place for your subquery
      (SELECT szallito_nev...) t
    GROUP BY
      szallito_nev
    

    【讨论】:

    • 你的意思是计算会放在from之后?
    • 是的,在本例中,SUM 用作聚合函数之一。
    • 但我的问题是值字段来自计算,如果我在 if 语句中编写孔公式,则会出现“无效使用组函数”之类的错误
    • 不,您的所有计算都必须在子查询中。主查询中的 SUM 可以替换为另一个聚合函数,使用哪个无关紧要。
    • 啊,好吧,我明白了,t 代表什么?
    【解决方案2】:
    SELECT
      sz_nev,
      IF( datum = 1, ossz, NULL) Jan
    
    from (
        (select szallito_nev as sz_nev from hamburger) a,
        (select extract(month from beerkezes_datuma) as datum from hamburger) b,
        (select ((sum(levonas_nedvesseg_miatt)/sum(merlegelt_suly))*100) as ossz FROM hamburger) c
       )
    group by sz_nev with rollup 
    

    我会尝试这个,但它永远不会运行,只是在执行中并且从未完成:S 这种方式有那么慢吗?或者应该是什么问题?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-05
      • 1970-01-01
      相关资源
      最近更新 更多