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

selectステートメントでのMysqlの計算

    一般的に言って、SQLは、あなたが望むような「現在の合計」を生成することを実際には意図していませんでした。他のRDBMSは、この種の計算を可能にする分析関数を提供する独自の拡張機能を導入していますが、MySQLにはそのような機能がありません。

    代わりに、大きく4つのオプションがあります。順不同:

    1. 結果セットをループしながら、アプリケーションに現在の合計を累積します。

    2. データベース内の現在の合計を追跡するようにスキーマを変更します(特に、新しいデータが「最後まで」追加されるだけのこのような状況で適しています)。

    3. 自己参加をグループ化する:

      SELECT   a.Sale_Date,
               SUM(a.Stock_Delivered)                AS Stock_Delivered,
               SUM(a.Units_Sold)                     AS Units_Sold,
               SUM(b.Stock_Delivered - b.Units_Sold) AS `Stock Balance`
      FROM     sales_report a
          JOIN sales_report b ON b.Sale_Date <= a.Sale_Date
      GROUP BY a.Sale_Date
      
    4. ユーザー変数 に現在の合計を累積します :

      SELECT   Sale_Date,
               Stock_Delivered,
               Units_Sold,
               @t := @t + Stock_Delivered - Units_Sold AS `Stock Balance`
      FROM     sales_report, (SELECT @t:=0) init
      ORDER BY Sale_Date
      


    1. 過去30日間のmysql結果の取得

    2. PHPでwhileループと同じIDデータをリストするにはどうすればよいですか?

    3. SQLSTATE [HY000][2005]不明なMySQLサーバーホスト'mysql1.alwaysdata.com:3306'(2)

    4. 'autoReconnect=true'でもMySqlJDBCタイムアウト