はじめに
この記事では、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 year(`Datefield`) when year(curdate()) 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())) then`Amountfield` 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を使っても計算できますが、より多くのコードが必要となります。
|
コメント
0件のコメント
サインインしてコメントを残してください。