ホームページ >データベース >mysql チュートリアル >SQL データを月と年でグループ化し、出力を「月-年」としてフォーマットするにはどうすればよいですか?
月と年による SQL グループ化
SQL では、時系列データを分析するときにデータを月と年でグループ化するのが一般的なタスクです。これを実現するには、MONTH() 関数と YEAR() 関数を GROUP BY 句とともに使用します。
問題ステートメント
ユーザーがクエリ中に問題が発生しました。 「日付」列を「月-年」として表示する順序テーブル (例: 「9-2011」)。彼らは次のクエリを使用しています:
SELECT MONTH(date) + '.' + YEAR(date) AS Mjesec, SUM(marketingExpense) AS SumaMarketing, SUM(revenue) AS SumaZarada FROM [Order] WHERE (idCustomer = 1) AND (date BETWEEN '2001-11-3' AND '2011-11-3') GROUP BY MONTH(date), YEAR(date)
ただし、このクエリは月 (例: "9") のみを表示し、ユーザーは出力に月と年の両方を含めたいと考えています。
解決策
この問題を解決するには、CAST() 関数を使用して月と年を変換します。値を文字列に分割し、間にハイフンを入れて連結します。更新されたクエリは次のとおりです。
SELECT CAST(MONTH(date) AS VARCHAR(2)) + '-' + CAST(YEAR(date) AS VARCHAR(4)) AS Mjesec, SUM(marketingExpense) AS SumaMarketing, SUM(revenue) AS SumaZarada FROM [Order] WHERE (idCustomer = 1) AND (date BETWEEN '2001-11-3' AND '2011-11-3') GROUP BY CAST(MONTH(date) AS VARCHAR(2)) + '-' + CAST(YEAR(date) AS VARCHAR(4))
このクエリは、月と年の両方を表示して、「日付」列を目的の形式で返します。
別のオプションは、キャストするときに先行ゼロを使用することです。一貫したフォーマットを確保します。これは、right() 関数を使用して実現できます。
GROUP BY CAST(YEAR(date) AS VARCHAR(4)) + '-' + right('00' + CAST(MONTH(date) AS VARCHAR(2)), 2)
このアプローチでは、1 桁の月の値に先頭のゼロが追加され、統一された書式設定になります (例: "09-2011")。
以上がSQL データを月と年でグループ化し、出力を「月-年」としてフォーマットするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。