2

「注文」テーブルに次の関連する列があります。

Date_Day(1 から 31 までの範囲で、末尾に 0 はありません)

Date_Month(1月から12月までの範囲で、数値ではありません)

Date_Year(4 桁形式の年です。例: 2005)

Total(小数点以下2桁の数字)

日付の保存方法がひどいことはわかっていますが、これが私が与えられたデータベースでした。私はいくつかのことを見つけようとしていますが、PHP で数学を行う代わりに SQL でそれを行う方法があるかどうかはわかりません:

  1. 各年の各日の合計。

  2. 昨年のこの日の SUM (この日はその月の n 番目の平日です。したがって、今日の場合、2012 年の 10 月の第 1 火曜日になります)

  3. 史上最高の収益日

MySQL は私の得意分野ではありません。PHP でそれを理解することはできますが、MySQL でそれが行われるのを見たいと思っているので、もっと学び始めることができます。

4

1 に答える 1

6

データベースの構造をそのまま維持したい場合は、次のクエリを使用できます。

各年の各日の合計:

SELECT Date_Year, Date_Month, Date_Day, SUM(Total)
FROM tablename
GROUP BY Date_Year, Date_Month, Date_Day

昨年のこの日の合計:

SELECT SUM(Total)
FROM tablename
WHERE
  Date_Year = YEAR(CURDATE())-1
  AND Date_Month = MONTHNAME(CURDATE())
  AND Date_Day = DAY(CURDATE())

史上最高の収益日:

SELECT Date_Year, Date_Month, Date_Day, SUM(Total)
FROM tablename
GROUP BY Date_Year, Date_Month, Date_Day
ORDER BY SUM(Total) DESC
LIMIT 1
于 2013-10-01T20:10:16.503 に答える