メインコンテンツへスキップ

はじめに

この記事では、Beast Modeで実行できる、前期比計算をいくつか紹介します。これらの同じ計算の多くは、 前期比チャート作成機能 を使用して実行することもできます。

前期比グラフを作成する

Domoで前期比グラフを作成するには、x軸(日付)に1つのBeast Mode計算を使い、系列に別のBeast Mode計算を使います。また、Beast Mode計算を作成して、カードに表示する日付の範囲を制限することもできます。 以下の例を使って、自分用の前期比Beast Mode計算を作成してみましょう。以下の例は、前年比グラフを作成する方法を示しています。 ステップ1:x軸(日付)計算を作成(必須) このステップでは、年など前期の日付を現在の期間の日付に算定します。これで、異なる期間のデータがx軸で同じ範囲内に表示されます。このBeast Mode計算は、日付の値の年の部分を現在の年に置き換えます。 STR_TO_DATE(CONCAT(YEAR(CURRENT_DATE()), '-', DATE_FORMAT(`Date_Field`, '%m-%d') ), '%Y-%m-%d') ステップ2:系列(年)計算を作成(必須) 次に、各期間のデータを表す系列を作成します。このBeast Mode計算は、各年のデータを表す系列を作成します。 YEAR(`Date_Field`) ステップ3:フィルターのための計算を作成(オプション) 1年間以外の期間(前四半期比、前月比など)を見たい場合は、その日付範囲または期間のみのフィルターを作成することもできます。 フィルター用のBeast Mode計算を作成するには、2つの方法があります。最初の方法では、特定の日付範囲内のフィルターを作成します。2つ目の方法では、過去の日数や月数などを指定したフィルターを作成します。 特定の日付範囲 特定の日付範囲のフィルターを作成するには、以下のBeast Mode計算を使います。
CASE

WHEN CONCAT(YEAR(CURRENT_DATE()), '-', DATE_FORMAT(`Date_Field `, '%m-%d') ) >= '2015-07-01' AND CONCAT(YEAR(CURRENT_DATE()), '-', DATE_FORMAT(`Date_Field `, '%m-%d') ) <= '2015-11-30' THEN 'TRUE'

ELSE 'FALSE'

END
過去X日や月など 特定の期間過去のフィルターを作成するには、以下のBeast Mode計算を使います。「3 MONTH」を、必要な期間に置き換えてください。例えば「1 DAY」、「4 WEEK」など。その場合、数値と、単位(単数形)を使用します。
CASE

WHEN STR_TO_DATE(CONCAT(YEAR(CURRENT_DATE()), '-', DATE_FORMAT(`Date_Field `, '%m-%d') ), '%Y-%m-%d') >= DATE_SUB(CURRENT_DATE(), INTERVAL 3 MONTH)  THEN 'TRUE'

ELSE 'FALSE'

END
必要な期間に応じて上記のフィルターに変更を加えて使用してください。

前週比の変化を計算する

以下のコードを使い、前週比の変化を示す計算を作成します。以下の例は、4週間前(曜日で並べられた)のものと52週間前(曜日で並べられた)のものを含んでいます。数値を目的の期間に変更します。 X軸が日付 - 「共通の日付」でなくてはなりません。
case

when DateDiff(AddDate(Current_Date(), -1), `MyDateColumn`) < 28 and DateDiff(Current_Date(), `MyDateColumn`) > 0 then Date_Format(`MyDateColumn`, '%b %e')

when DateDiff(AddDate(Current_Date(), -1), `MyDateColumn`) < (28 + 28) and DateDiff(Current_Date(), `MyDateColumn`) > 28 then Date_Format(AddDate(`MyDateColumn`,28), '%b %e')

when DateDiff(AddDate(Current_Date(), -1), `MyDateColumn`) < 28 + (52 * 7) and DateDiff(Current_Date(), `MyDateColumn`) > (52 * 7) then Date_Format(AddDate(`MyDateColumn`,52 * 7), '%b %e')

end
「過去28日間」にフィルターをかけます。
case

when DateDiff(AddDate(Current_Date(), -1), `MyDateColumn`) < 28 and DateDiff(Current_Date(), `MyDateColumn`) > 0 then 'Yes'

when DateDiff(AddDate(Current_Date(), -1), `MyDateColumn`) < (28 + 28) and DateDiff(Current_Date(), `MyDateColumn`) > 28 then 'Yes'

when DateDiff(AddDate(Current_Date(), -1), `MyDateColumn`) < 28 + (52 * 7) and DateDiff(Current_Date(), `MyDateColumn`) > (52 * 7) then 'Yes'

else 'No'

end
メトリクスを選び(「アクセス数」など)、「系列」という名前の列を作成します。
case

when DateDiff(AddDate(Current_Date(), -1), `MyDateColumn`) < 28 and DateDiff(Current_Date(), `MyDateColumn`) > 0 then 'Last 28 Days'

when DateDiff(AddDate(Current_Date(), -1), `MyDateColumn`) < (28 + 28) and DateDiff(Current_Date(), `MyDateColumn`) > 28 then '4 Weeks Prior'

when when DateDiff(AddDate(Current_Date(), -1), `MyDateColumn`) < 28 + (52 * 7) and DateDiff(Current_Date(), `MyDateColumn`) > (52 * 7) then '52 Weeks Prior'

end

前年から今年までの変化の割合を計算する

例えば、過去24ヶ月を月別にグループ化して表示するカードがあるとします。系列として、年が設定されています。前年の1月から現在の月と、今年の1月から現在の月とを比較し、まとめ数字にその変化の割合(%)を表示したいとします。これを行うには、以下のBeast Mode計算を作成します。
(SUM(CASE WHEN YEAR('Date') = YEAR('NOW') THEN 'Total Sales' ELSE 0 END)-SUM(CASE WHEN YEAR('Date')= YEAR(DATE_SUB('NOW', INTERVAL 1 YEAR))AND month('Date') <= month('NOW') THEN 'Total Sales' ELSE 0 END))/

SUM(CASE WHEN YEAR('Date')= YEAR(DATE_SUB('NOW', INTERVAL 1 YEAR)) AND month('Date') <= month('NOW') THEN 'Total Sales' ELSE 0 END)
この計算は、カードのまとめ数字や、単一値パネルの値として役立ちます。時間の経過に沿って変化の割合(%)を示したい場合は、前のセクションに記載された高度な前期比の計算方法に従ってBeast Mode計算を作成し、以下の計算式に従って前年の値と現在の値のフィールドから変化の割合(%)を導きます。 (今年の値 - 昨年の値)/昨年の値

差異を計算する

当年度・前年度差異

以下のコードを使い、当年度と前年度の差異の計算を作成します。 “ (SUM(CASE WHEN YEAR(MyDateColumn) = YEAR(CURRENT_DATE()) THEN Amount ELSE 0 END)
  • SUM(CASE WHEN YEAR(MyDateColumn) = YEAR(CURRENT_DATE()) - 1 THEN Amount ELSE 0 END) ) “

差異%((CY - PY)/PY)

以下のコードを使い、差異%((当年度 − 前年)/前年度)の計算を作成します。 “ ((SUM(CASE WHEN YEAR(MyDateColumn) = YEAR(CURRENT_DATE()) THEN Amount ELSE 0 END)
  • SUM(CASE WHEN YEAR(MyDateColumn) = YEAR(CURRENT_DATE()) - 1 THEN Amount ELSE 0 END) ) / NULLIF(SUM(CASE WHEN YEAR(MyDateColumn) = YEAR(CURRENT_DATE()) - 1 THEN Amount ELSE 0 END), 0) ) “

年初来差異

月ごとの店舗別の従業員数を含むDataSetがあるとします。今月の従業員数と年末の数を比較するには、どうしたらよいでしょうか? カードが現在の年にフィルターされていると仮定した場合、次のBeast Mode計算を作成します。 今月の従業員数: COUNT(DISTINCT CASE WHEN YEAR(DateColumn) = YEAR(CURRENT_DATE()) AND MONTH(DateColumn) = MONTH(CURRENT_DATE()) THEN `Employee ID` END) 今年の従業員数: COUNT(DISTINCT'Employee ID') 今年の従業員数 - 今月の従業員数(年初来差異): COUNT(DISTINCT `Employee Id` - COUNT(DISTINCT CASE WHEN YEAR(DateColumn) = YEAR(CURRENT_DATE()) AND MONTH(DateColumn) = MONTH(CURRENT_DATE()) THEN `Employee ID` END) このデータのトレンドを時系列で確認する必要がある場合は、このソリューションで、毎月の年初来を参照し、月レベルで要約する作業をDataFlowで実行する必要があります。

前年同期比(YOY)を比率で計算する

このタイプの比較を行う場合、比率の計算はすべてDataFlow内で行う必要があります。

YOY:複数期間の比較

複数期間の前年同期比計算を作成するには、次の表をご覧ください。
期間 説明 計算
年単位 年間Beast Modeを作成し、カテゴリーとしてプロットします(ほとんどのチャートでx軸)。 year(datefield)
四半期単位 四半期Beast Modeを作成してカテゴリーとしてプロットします(ほとんどのチャートでx軸)。複数年にまたがる場合は year( datefield ) を系列として使用します。 Quarter(datefield)
月単位 月単位のBeast Modeを作成してカテゴリーとしてプロットします(ほとんどのチャートでx軸)。複数年にまたがる場合は year(datefield) を系列として使用します。 Month(datefield)
週単位 月単位のBeast Modeを作成してカテゴリーとしてプロットします(ほとんどのチャートでx軸)。複数年にまたがる場合は year(datefield) を系列として使用します。 WeekofYear(datefield)
日単位 日単位のBeast Modeを作成してカテゴリーとしてプロットします(ほとんどのチャートでx軸)。複数年にまたがる場合は year(datefield) を系列として使用します。 DayofYear(datefield)

YOY:2つの期間の比較

‘This Year’‘Last Year’ は、ほかのテキストまたは金額フィールドと入れ替えることができます。比率を計算する際は、金額フィールドは必須です。 「複数系列」に対して「同一系列」の利点は、「同一系列」ではコードを統合できることです。ただ、「今年/前年」を金額列と入れ替える場合は、それらを分離する必要があります。

YOY:年間比較

年間の前年同期比計算を作成するには、次の表をご覧ください。
タイプ 計算
複数系列 - 今年 Case when Year(Datefield) = Year(curdate()) then ‘This Year’ end
複数系列 - 前年 Case when Year(Datefield) = Year(curdate())-1 then ‘Last Year’ end
複数系列 - 同じ系列 Case year(Datefield) when year(curdate()) then ‘This Year’ when year(curdate())-1 then ‘Last Year’ End
比率:(C/P) - 1の計算式を用いた2つの間の変化の割合

(Case when Year(Datefield) = Year(curdate()) then Amountfield end / Case when Year(Datefield) = Year(curdate())-1 then Amountfield end) -1

注記: (C-P)/Pを使っても計算できますが、より多くのコードが必要となります。

YOY:1年間(YTD)の比較

年初来の前年同期比計算を作成するには、次の表をご覧ください。
タイプ 計算
複数系列 - 今年 CASE WHEN year(Datefield)=year(curdate()) THEN ‘This Year’ END
複数系列 - 前年 CASE WHEN ((year(Datefield)=(year(curdate()) - 1)) AND (dayofyear(curdate()) >= dayofyear(Datefield))) THEN ‘Last Year’ END
複数系列 - 同じ系列

CASE WHEN year(Datefield) = year(curdate()) AND curdate() >= Datefield THEN ‘This Year’ when ((year(Datefield)=(year(curdate()) - 1)) AND (dayofyear(curdate()) >= dayofyear(Datefield))) THEN ‘Last Year’ END

比率:(C/P) - 1の計算式を用いた2つの間の変化の割合

(CASE WHEN year(Datefield)=year(curdate()) THEN Amountfield END / CASE WHEN ((year(Datefield)=(year(curdate()) - 1)) AND (dayofyear(curdate()) >= dayofyear(Datefield))) THEN Amountfield END) -1

注記: (C-P)/Pを使っても計算できますが、より多くのコードが必要となります。

YOY:四半期比較

四半期の前年同期比計算を作成するには、次の表をご覧ください。
タイプ 計算
複数系列 - 今年 Case when (quarter(Datefield) = quarter(curdate()) and year(Datefield) = year(curdate())) then ‘This Year’ end
複数系列 - 前年 Case when (quarter(Datefield) = quarter(curdate()) and year(Datefield) = year(curdate())-1) then ‘Last Year’ end
複数系列 - 同じ系列 Case when (Quarter(Datefield) = Quarter(curdate()) and year(Datefield) = year(curdate())) then ‘This Year’ when (Quarter(Datefield) = Quarter(curdate()) and year(Datefield) = year(date_sub(curdate(), interval 1 year))) then ‘Last Year’ End
比率:(C/P) - 1の計算式を用いた2つの間の変化の割合

(Case when (quarter(Datefield) = quarter(curdate()) and year(Datefield) = year(curdate())) then Amountfield end / Case when (quarter(Datefield) = quarter(curdate()) and year(Datefield) = year(curdate())-1) then Amountfield end) -1

注記: (C-P)/Pを使っても計算できますが、より多くのコードが必要となります。

YOY:四半期初来(QTD)の比較

四半期初来の前年同期比計算を作成するには、次の表をご覧ください。
タイプ 計算
複数系列 - 今年 Case when (quarter(Datefield) = quarter(curdate()) and year(Datefield) = year(curdate()) and dayofyear(Datefield) <= dayofyear(curdate())) then ‘This Year’ end
複数系列 - 前年 Case when (quarter(Datefield) = quarter(curdate()) and year(Datefield) = year(curdate())-1 and dayofyear(Datefield) <= dayofyear(curdate())) then ‘Last Year’ end
複数系列 - 同じ系列 Case when (Quarter(Datefield) = Quarter(curdate()) and year(Datefield) = year(curdate())) then ‘This Year’ when (Quarter(Datefield) = Quarter(curdate()) and year(Datefield) = year(date_sub(curdate(), interval 1 year))) then ‘Last Year’ End
比率:(C/P) - 1の計算式を用いた2つの間の変化の割合

(Case when (quarter(Datefield) = quarter(curdate()) and year(Datefield) = year(curdate()) and dayofyear(Datefield) <= dayofyear(curdate())) then Amountfield end / Case when (quarter(Datefield) = quarter(curdate()) and year(Datefield) = year(curdate())-1 and dayofyear(Datefield) <= dayofyear(curdate())) thenAmountfield end) -1

注記: (C-P)/Pを使っても計算できますが、より多くのコードが必要となります。

YOY:月別比較

月別の前年同期比計算を作成するには、次の表をご覧ください。
タイプ 計算
複数系列 - 今年 Case when (month(Datefield) = month(curdate()) and year(Datefield) = year(curdate())) then ‘This Year’ end
複数系列 - 前年 Case when (month(Datefield) = month(curdate()) and year(Datefield) = year(curdate())-1) then ‘Last Year’ end
複数系列 - 同じ系列 Case when (month(Datefield) = month(curdate()) and year(Datefield) = year(curdate())) then ‘This Year’ when (month(Datefield) = month(curdate()) and year(Datefield) = year(date_sub(curdate(), interval 1 year))) then ‘Last Year’ End
比率:(C/P) - 1の計算式を用いた2つの間の変化の割合

(Case when (month(Datefield) = month(curdate()) and year(Datefield) = year(curdate())) then Amountfield end / Case when (month(Datefield) = month(curdate()) and year(Datefield) = year(curdate())-1) then Amountfield end) -1

注記: (C-P)/Pを使っても計算できますが、より多くのコードが必要となります。

YOY:1ヶ月間(MTD)の比較

1ヶ月間の前年同期比計算を作成するには、次の表をご覧ください。
タイプ 計算
複数系列 - 今年 Case when (month(Datefield) = month(curdate()) and year(Datefield) = year(curdate()) and DAYOFMONTH(Datefield) <= DAYOFMONTH(curdate())) then ‘This Year’ end
複数系列 - 前年 Case when (month(Datefield) = month(curdate()) and year(Datefield) = year(date_sub(curdate(), interval 1 year)) and DAYOFMONTH(Datefield) <= DAYOFMONTH(curdate())) then ‘Last Year’ end
複数系列 - 同じ系列 Case when (month(Datefield) = month(curdate()) and year(Datefield) = year(curdate()) and DAYOFMONTH(Datefield) <= DAYOFMONTH(curdate())) then ‘This Year’ when (month(Datefield) = month(curdate()) and year(Datefield) = year(date_sub(curdate(), interval 1 year)) and DAYOFMONTH(Datefield) <= DAYOFMONTH(curdate())) then Last Year’ End
比率:(C/P) - 1の計算式を用いた2つの間の変化の割合

(Case when (month(Datefield) = month(curdate()) and year(Datefield) = year(curdate()) and DAYOFMONTH(Datefield) <= DAYOFMONTH(curdate())) then Amountfield end / Case when (month(Datefield) = month(curdate()) and year(Datefield) = year(date_sub(curdate(), interval 1 year)) and DAYOFMONTH(Datefield) <= DAYOFMONTH(curdate())) then Amountfield end) -1

注記: (C-P)/Pを使っても計算できますが、より多くのコードが必要となります。

YOY:週別比較

1ヶ月間の前年同期比計算を作成するには、次の表をご覧ください。
タイプ 計算
複数系列 - 今年 Case when (WEEKOFYEAR(Datefield) = WEEKOFYEAR(curdate()) and year(Datefield) = year(curdate())) then ‘This Year’ end
複数系列 - 前年 Case when (WEEKOFYEAR(Datefield) = WEEKOFYEAR(curdate()) and year(Datefield) = year(date_sub(curdate(), interval 1 year))) then ‘Last Year’ End
複数系列 - 同じ系列 Case when (WEEKOFYEAR(Datefield) = WEEKOFYEAR(curdate()) and year(Datefield) = year(curdate())) then ‘This Year’ when (WEEKOFYEAR(Datefield) = WEEKOFYEAR(curdate()) and year(Datefield) = year(date_sub(curdate(), interval 1 year))) then ‘Last Year’ End
比率:(C/P) - 1の計算式を用いた2つの間の変化の割合

((Case when (WEEKOFYEAR(Datefield) = WEEKOFYEAR(curdate()) and year(Datefield) = year(curdate())) then Amountfield end / Case when (WEEKOFYEAR(Datefield) = WEEKOFYEAR(curdate()) and year(Datefield) = year(date_sub(curdate(), interval 1 year))) then Amountfield End) -1

注記: (C-P)/Pを使っても計算できますが、より多くのコードが必要となります。

YOY:1週間(WTD)の比較

1週間の前年同期比計算を作成するには、次の表をご覧ください。
タイプ 計算
複数系列 - 今年 Case when (WEEKOFYEAR(Datefield) = WEEKOFYEAR(curdate()) and year(Datefield) = year(curdate()) and DAYOFWEEK(Datefield) <= DAYOFWEEK(curdate())) then ‘This Year’ end
複数系列 - 前年 Case when (WEEKOFYEAR(Datefield) = WEEKOFYEAR(curdate()) and year(Datefield) = year(date_sub(curdate(), interval 1 year)) and DAYOFWEEK(Datefield) <= DAYOFWEEK(curdate())) then ‘Last Year’ End
複数系列 - 同じ系列 Case when (WEEKOFYEAR(Datefield) = WEEKOFYEAR(curdate()) and year(Datefield) = year(curdate()) and DAYOFWEEK(Datefield) <= DAYOFWEEK(curdate())) then ‘This Year’ when (WEEKOFYEAR(Datefield) = WEEKOFYEAR(curdate()) and year(Datefield) = year(date_sub(curdate(), interval 1 year))and DAYOFWEEK(Datefield) <= DAYOFWEEK(curdate())) then ‘Last Year’ End
比率:(C/P) - 1の計算式を用いた2つの間の変化の割合

(Case when (WEEKOFYEAR(Datefield) = WEEKOFYEAR(curdate()) and year(Datefield) = year(curdate()) and DAYOFWEEK(Datefield) <= DAYOFWEEK(curdate())) then Amountfield end / Case when (WEEKOFYEAR(Datefield) = WEEKOFYEAR(curdate()) and year(Datefield) = year(date_sub(curdate(), interval 1 year)) and DAYOFWEEK(Datefield) <= DAYOFWEEK(curdate())) then Amountfield End) -1

注記: (C-P)/Pを使っても計算できますが、より多くのコードが必要となります。

YOY:日別比較

1週間の前年同期比計算を作成するには、次の表をご覧ください。
タイプ 計算
複数系列 - 今年 Case when (DAYOFYEAR(Datefield) = DAYOFYEAR(curdate()) and year(Datefield) = year(curdate())) then ‘This Year’ end
複数系列 - 前年 Case when (DAYOFYEAR(Datefield) = DAYOFYEAR(curdate()) and year(Datefield) = year(date_sub(curdate(), interval 1 year))) then ‘Last Year’ End
複数系列 - 同じ系列 Case when (DAYOFYEAR(Datefield) = DAYOFYEAR(curdate()) and year(Datefield) = year(curdate())) then ‘This Year’ when (DAYOFYEAR(Datefield) = DAYOFYEAR(curdate()) and year(Datefield) = year(date_sub(curdate(), interval 1 year))) then ‘Last Year’ End
比率:(C/P) - 1の計算式を用いた2つの間の変化の割合

(Case when (DAYOFYEAR(Datefield) = DAYOFYEAR(curdate()) and year(Datefield) = year(curdate())) then Amountfield end / Case when (DAYOFYEAR(Datefield) = DAYOFYEAR(curdate()) and year(Datefield) = year(date_sub(curdate(), interval 1 year))) then Amountfield End) -1

注記: (C-P)/Pを使っても計算できますが、より多くのコードが必要となります。

比率計算を使ったPOP計算(今期対前期)

POP:前四半期比(QOQ)の比較

前四半期比の比較計算を作成するには、次の表をご覧ください。
タイプ 計算
複数系列 - 今期 CASE WHEN ((year(Datefield)=year(curdate())) AND (quarter(Datefield)=quarter(CURDATE()))) THEN Amountfield END
複数系列 - 前期 CASE WHEN (quarter(curdate())=1) THEN (CASE WHEN ((year(Datefield)=(year(curdate()) - 1)) AND (quarter(Datefield)=4)) THEN Amountfield END ) ELSE (CASE WHEN ((year(Datefield)=year(curdate())) AND (quarter(Datefield)=(quarter(CURDATE()) -1))) THEN Amountfield END ) END
比率:(C/P) - 1の計算式を用いた2つの間の変化の割合

(CASE WHEN ((year(Datefield)=year(curdate())) AND (quarter(Datefield)=quarter(CURDATE()))) THEN Amountfield END / CASE WHEN (quarter(curdate())=1) THEN (CASE WHEN ((year(Datefield)=(year(curdate()) - 1)) AND (quarter(Datefield)=4)) THEN Amountfield END ) ELSE (CASE WHEN ((year(Datefield)=year(curdate())) AND (quarter(Datefield)=(quarter(CURDATE()) -1))) THEN Amountfield END ) END) -1

注記: (C-P)/Pを使っても計算できますが、より多くのコードが必要となります。

POP:QTD前四半期比の比較

四半期初来の前四半期比の比較計算を作成するには、次の表をご覧ください。
タイプ 計算
複数系列 - 今期 CASE WHEN ((year(Datefield)=year(curdate())) AND (quarter(Datefield)=quarter(CURDATE()))) THEN Amountfield END
複数系列 - 前期
MAX(CASE WHEN YEAR(curdate()) / 4 = ROUND((YEAR(curdate()) / 4),0) THEN CASE WHEN QUARTER(curdate())=1 THEN (DAYOFYEAR(curdate()) - 1) WHEN (QUARTER(curdate())=2) THEN (DAYOFYEAR(curdate()) - 91) WHEN (QUARTER(curdate())=3) THEN (DAYOFYEAR(curdate()) - 182) WHEN (QUARTER(curdate())=4) THEN (DAYOFYEAR(curdate()) - 273) ELSE 0 END ELSE CASE WHEN QUARTER(curdate())=1 THEN DAYOFYEAR(curdate()) - 1 WHEN QUARTER(curdate())=2 THEN DAYOFYEAR(curdate()) - 90 WHEN QUARTER(curdate())=3 THEN DAYOFYEAR(curdate()) - 181 WHEN QUARTER(curdate())=4 THEN DAYOFYEAR(curdate()) - 272 ELSE 0 END END) * MAX(CASE WHEN YEAR(curdate()) / 4=ROUND(YEAR(curdate()) / 4,0) THEN CASE WHEN (QUARTER(curdate())=1) THEN 91 WHEN (QUARTER(curdate())=2) THEN 91 WHEN (QUARTER(curdate())=3) THEN 92 WHEN (QUARTER(curdate())=4) THEN 92 ELSE 0 END ELSE CASE WHEN (QUARTER(curdate())=1) THEN 90 WHEN (QUARTER(curdate())=2) THEN 91 WHEN (QUARTER(curdate())=3) THEN 92 WHEN (QUARTER(curdate())=4) THEN 92 ELSE 0 END END) - MAX(CASE WHEN YEAR(curdate()) / 4=ROUND(YEAR(curdate()) / 4,0) THEN CASE WHEN QUARTER(curdate())=1 THEN DAYOFYEAR(curdate()) - 1 WHEN QUARTER(curdate())=2 THEN DAYOFYEAR(curdate()) - 91 WHEN QUARTER(curdate())=3 THEN DAYOFYEAR(curdate()) - 182 WHEN QUARTER(curdate())=4 THEN DAYOFYEAR(curdate()) - 273 ELSE 0 END ELSE CASE WHEN QUARTER(curdate())=1 THEN DAYOFYEAR(curdate()) - 1 WHEN QUARTER(curdate())=2 THEN DAYOFYEAR(curdate()) - 90 WHEN QUARTER(curdate())=3 THEN DAYOFYEAR(curdate()) - 181 WHEN QUARTER(curdate())=4 THEN DAYOFYEAR(curdate()) - 272 ELSE 0 END END) + SUM(CASE WHEN QUARTER(curdate())=QUARTER(Datefield) AND YEAR(Datefield)=YEAR(curdate()) THEN Amountfield ELSE 0 END) - SUM((CASE WHEN ((QUARTER(curdate())=QUARTER(Datefield)) AND (YEAR(Datefield)=YEAR(DATE_SUB(curdate(),INTERVAL 1 QUARTER)))) THEN Amountfield ELSE 0 END ))) / SUM((CASE WHEN QUARTER(DATE_SUB(curdate(),INTERVAL 1 QUARTER))=QUARTER(Datefield) AND YEAR(Datefield)=YEAR(DATE_SUB(curdate(),INTERVAL 1 QUARTER)) THEN Amountfield ELSE 0 END ))
比率:(C/P) - 1の計算式を用いた2つの間の変化の割合

結果を得るには、上の計算式にその前の2つのセクションを挿入します。

注記: (C-P)/Pを使っても計算できますが、より多くのコードが必要となります。

POP:前月比(MOM)の比較

前月比の比較計算を作成するには、次の表をご覧ください。
タイプ 計算
複数系列
CASE WHEN ((year(Datefield)=year(curdate())) AND (month(Datefield)=month(CURDATE()))) THEN Amountfield END CASE WHEN (month(curdate())=1) THEN (CASE WHEN ((year(Datefield)=(year(curdate()) - 1)) AND (month(Datefield)=12)) THEN Amountfield END ) ELSE (CASE WHEN ((year(Datefield)=year(curdate())) AND (month(Datefield)=(month(CURDATE()) -1))) THEN Amountfield END ) END
比率:(C/P) - 1の計算式を用いた2つの間の変化の割合

(CASE WHEN ((year(Datefield)=year(curdate())) AND (month(Datefield)=month(CURDATE()))) THEN Amountfield END / CASE WHEN (month(curdate())=1) THEN (CASE WHEN ((year(Datefield)=(year(curdate()) - 1)) AND (month(Datefield)=12)) THEN Amountfield END ) ELSE (CASE WHEN ((year(Datefield)=year(curdate())) AND (month(Datefield)=(month(CURDATE()) -1))) THEN Amountfield END ) END) -1

注記: (C-P)/Pを使っても計算できますが、より多くのコードが必要となります。

POP:1ヶ月間MOMの比較

1ヶ月間の比較計算を作成するには、次の表をご覧ください。
タイプ 計算
複数系列
CASE WHEN ((year(Datefield)=year(curdate())) AND (month(Datefield)=month(CURDATE()))) THEN Amountfield END CASE WHEN month(curdate()) = 1 THEN CASE WHEN year(Datefield) = year(curdate()) - 1 AND month(Datefield) = 12 AND DAYOFMONTH(Datefield) <= DAYOFMONTH(curdate()) THEN Amountfield END ELSE CASE WHEN year(Datefield) = year(curdate()) AND month(Datefield) = month(curdate())-1 AND DAYOFMONTH(Datefield) <= DAYOFMONTH(curdate()) THEN Amountfield END END
比率:(C/P) - 1の計算式を用いた2つの間の変化の割合

(CASE WHEN ((year(Datefield)=year(curdate())) AND (month(Datefield)=month(CURDATE()))) THEN Amountfield END / CASE WHEN month(curdate()) = 1 THEN CASE WHEN year(Datefield) = year(curdate()) - 1 AND month(Datefield) = 12 AND DAYOFMONTH(Datefield) <= DAYOFMONTH(curdate()) THEN Amountfield END ELSE CASE WHEN year(Datefield) = year(curdate()) AND month(Datefield) = month(curdate())-1 AND DAYOFMONTH(Datefield) <= DAYOFMONTH(curdate()) THEN Amountfield END END) -1

注記: (C-P)/Pを使っても計算できますが、より多くのコードが必要となります。

POP:前週比(WOW)の比較

前週比の比較計算を作成するには、次の表をご覧ください。
タイプ 計算
複数系列
CASE WHEN ((year(Datefield)=year(curdate())) AND (weekofyear(Datefield)=weekofyear(CURDATE()))) THEN Amountfield END CASE WHEN (weekofyear(curdate())=1) THEN (CASE WHEN ((year(Datefield)=(year(curdate()) - 1)) AND (weekofyear(Datefield)=52)) THEN Amountfield END ) ELSE (CASE WHEN ((year(Datefield)=year(curdate())) AND (weekofyear(Datefield)=(weekofyear(CURDATE()) -1))) THEN Amountfield END ) END
比率:(C/P) - 1の計算式を用いた2つの間の変化の割合

(CASE WHEN ((year(Datefield)=year(curdate())) AND (weekofyear(Datefield)=weekofyear(CURDATE()))) THEN Amountfield END / CASE WHEN (weekofyear(curdate())=1) THEN (CASE WHEN ((year(Datefield)=(year(curdate()) - 1)) AND (weekofyear(Datefield)=52)) THEN Amountfield END ) ELSE (CASE WHEN ((year(Datefield)=year(curdate())) AND (weekofyear(Datefield)=(weekofyear(CURDATE()) -1))) THEN Amountfield END ) END) -1

注記: (C-P)/Pを使っても計算できますが、より多くのコードが必要となります。

POP:1週間のWOWの比較

1週間の前週比の比較計算を作成するには、次の表をご覧ください。
タイプ 計算
複数系列
CASE WHEN ((year(Datefield)=year(curdate())) AND (weekofyear(Datefield)=weekofyear(CURDATE()))) THEN Amountfield END CASE WHEN weekofyear(curdate()) = 1 THEN CASE WHEN year(Datefield) = year(curdate()) - 1 AND weekofyear(Datefield) = 52 AND DAYOFWEEK(Datefield) <= DAYOFWEEK(curdate()) THEN Amountfield END ELSE CASE WHEN year(Datefield) = year(curdate()) AND weekofyear(Datefield) = weekofyear(CURDATE()) -1 AND DAYOFWEEK(Datefield) <= DAYOFWEEK(curdate()) THEN Amountfield END END
比率:(C/P) - 1の計算式を用いた2つの間の変化の割合

(CASE WHEN ((year(Datefield)=year(curdate())) AND (weekofyear(Datefield)=weekofyear(CURDATE()))) THEN Amountfield END / CASE WHEN weekofyear(curdate()) = 1 THEN CASE WHEN year(Datefield) = year(curdate()) - 1 AND weekofyear(Datefield) = 52 AND DAYOFWEEK(Datefield) <= DAYOFWEEK(curdate()) THEN Amountfield END ELSE CASE WHEN year(Datefield) = year(curdate()) AND weekofyear(Datefield) = weekofyear(CURDATE()) -1 AND DAYOFWEEK(Datefield) <= DAYOFWEEK(curdate()) THEN Amountfield END END) -1

注記: (C-P)/Pを使っても計算できますが、より多くのコードが必要となります。

POP:前日比(DOD)の比較

前日比の比較計算を作成するには、次の表を参照してください。
タイプ 計算
複数系列
CASE WHEN ((year(Datefield)=year(curdate())) AND (dayofyear(Datefield)=dayofyear(CURDATE()))) THEN Amountfield END CASE WHEN (dayofyear(curdate())=1) THEN (CASE WHEN ((year(Datefield)=(year(curdate()) - 1)) AND (dayofyear(Datefield)=365)) THEN Amountfield END ) ELSE (CASE WHEN ((year(Datefield)=year(curdate())) AND (dayofyear(Datefield)=(dayofyear(CURDATE()) -1))) THEN Amountfield END ) END
比率:(C/P) - 1の計算式を用いた2つの間の変化の割合

(CASE WHEN ((year(Datefield)=year(curdate())) AND (dayofyear(Datefield)=dayofyear(CURDATE()))) THEN Amountfield END / CASE WHEN (dayofyear(curdate())=1) THEN (CASE WHEN ((year(Datefield)=(year(curdate()) - 1)) AND (dayofyear(Datefield)=365)) THEN Amountfield END ) ELSE (CASE WHEN ((year(Datefield)=year(curdate())) AND (dayofyear(Datefield)=(dayofyear(CURDATE()) -1))) THEN Amountfield END ) END) -1

注記: (C-P)/Pを使っても計算できますが、より多くのコードが必要となります。

日本語