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

過去4四半期のデータ

    トリッキーな部分は、四半期の最終日を取得することです。

    このソリューションは、目標日から9か月を減算し、'Q'で切り捨てることにより、範囲の開始日を計算します。 四半期の最初の日を与えるマスク。次に、その日付をもう一度計算します。 、1日を引き、次に12か月を足すと、現在の四半期の最終日が得られます。

    with tgt as ( select date '2019-03-30' as dt from dual
                  union all select date '2019-02-28' as dt from dual
                  union all select date '2019-04-01' as dt from dual
    )
    select trunc(tgt.dt - interval '9' month, 'Q') as range_st,
           (trunc(tgt.dt - interval '9' month, 'Q') - 1) + interval '12' month as range_end
    from tgt
    /
    

    そこに滑らかな解決策があるかもしれませんが、これは私のコーヒーブレイクの終わりです:)



    1. 私のpostgisがジオメトリフィールドにインデックスを使用しないのはなぜですか?

    2. 多くのJOINを使用してクエリのパフォーマンスを向上させる方法

    3. PL / SQLトリガーは、1つの表のINSERTから別の表を更新します

    4. パフォーマンスの驚きと仮定:STRING_SPLIT()