sql >> データベース >  >> RDS >> Mysql

複雑なGroupBy後の前の行/日からの増加率を計算するにはどうすればよいですか?

    次のリファレンスをご覧ください: SQLFIDDLE

    したがって、OHLCを使用した現在のテーブルを使用して、px_change、px_pctを導出します:)結果はrounded 変化の小数点以下4桁とパーセンテージを表示します。nullは、価格の変化がないことを表すのに、価格の変化がないことを表すために使用されます;)

    クエリ:

    select ticker, date_format(date,'%m-%d-%Y') as date, open, high,low,close,
    pxchange,concat(round(pxpct*100,4),'%') pxpct
    from (select case when ticker <> @pxticker 
            then @pxclose := null end, p.*, ([email protected]) as pxchange,
        ([email protected])/@pxclose as pxpct, (@pxclose := close),
        (@pxticker := ticker) from pricing p
    cross join
        (select @pxclose := null, @pxticker := ticker
         from pricing 
         order by ticker, date limit 1)  as a
      order by ticker, date ) as b
    order by ticker, date asc
    

    結果:

    TICKER  DATE        OPEN    HIGH    LOW     CLOSE   PXCHANGE  PXPCT
    AAAE    11-26-2012  0.01    0.01    0.01    0.01    (null)    (null)
    AAAE    11-27-2012  0.013   0.014   0.0083  0.014   0.004     40.0000%
    AAAE    11-28-2012  0.014   0.0175  0.014   0.0165  0.0025    17.8571%
    AAAE    11-29-2012  0.0175  0.0175  0.0137  0.0137  -0.0028   -16.9697%
    AAMRQ   11-26-2012  0.4411  0.53    0.4411  0.529   (null)    (null)
    AAMRQ   11-27-2012  0.51    0.511   0.461   0.495   -0.034    -6.4272%
    AAMRQ   11-28-2012  0.482   0.49    0.43    0.464   -0.031    -6.2626%
    AAMRQ   11-29-2012  0.4505  0.459   0.4411  0.459   -0.005    -1.0776%
    AAMRQ   11-30-2012  0.45    0.457   0.4455  0.4568  -0.0022   -0.4793%
    

    **コメントでOPの要求に従って括弧を表示するために画像で更新されました**:)



    1. 外部キーを使用してチェック制約を置き換える

    2. SELECTを使用してx番目から開始して勝者をMSQLに照会します

    3. 単一のクエリを使用して、複数のテーブルからプルします

    4. 高可用性のためにPerconaXtraDBCluster8をデプロイする方法