• ベストアンサー

MySQL4.1.15でのSUM関数でDISTINCTについて

お世話になっております。 MySQLの4.1.15を使用しております。 合計を出すSUM関数を使用し、重複する値を除外させて計算させる方法はありませんか? MySQL5.1からはSUM関数にDISTINCTをつければ重複値を削除できますが、4.1.15で同じ計算をさせる方法が分かりません。 ご教授の程宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

MySQL 5.0の環境しかないので、MySQL 4.1系と5.1系での確認はできていませんが、こんな感じでどうでしょうか? select sum(c2) from (select distinct c2 from t1) as x;

nikuq
質問者

お礼

ありがとうございます。 うーん、やってみたんですが思い通りの結果が得られませんでした。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

回答No.3

>やってみたんですが思い通りの結果が得られませんでした。 どういうテーブルのデータから、どういう結果を得たいか示してもらえますか?

nikuq
質問者

お礼

ありがとうございます。 すみません。やはりしっかりとしたテーブル構造を明記した上で再度みなさんにお聞きしたいと思い、別に質問をしました。 http://okwave.jp/qa4128362.html こちらの新たな質問に、現在悩んでいる内容とテーブル構造を詳細に明記してみました。 度々で大変恐縮なのですが、お時間があれば、こちらの質問を見て頂けますと大変助かります。

全文を見る
すると、全ての回答が全文表示されます。
  • nfushi
  • ベストアンサー率31% (39/122)
回答No.1

EXISTSを使うのが一般的だと思います。 テーブル構造やデータを示した方が答えやすいので宜しくお願いします。

nikuq
質問者

お礼

ありがとうございます。 結構複雑な計算になるので、構造を明記する事ができませんでしたが、頂いたお答えからもっと調べて見ます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 複数のグループ化でのSUM関数について

    お世話になります。宜しくお願い致します。 MySQL4.1.15を使っております。 下記のようなテーブルがあるとします。 hoge_table | id1 | id2 | total | | 1 | 10 | 100 | | 1 | 10 | 100 | | 1 | 10 | 100 | | 2 | 20 | 200 | | 2 | 20 | 200 | | 3 | 20 | 300 | | 4 | 20 | 400 | | 4 | 20 | 400 | | 4 | 20 | 400 | | 4 | 20 | 400 | | 5 | 20 | 500 | | 5 | 20 | 500 | | 6 | 30 | 600 | | 7 | 30 | 700 | | 7 | 30 | 700 | | 7 | 30 | 700 | | 7 | 30 | 700 | | 8 | 30 | 800 | | 9 | 30 | 900 | | 9 | 30 | 900 | | 9 | 30 | 900 | | 9 | 30 | 900 | | 9 | 30 | 900 | このテーブルに対して、下記のような条件でTOTALを出したいのです。 条件: id2でグループ化させた上、同じid1のtotalから重複を削除した合計 id2をグループ化させると、10、20、30の3レコードにまとまり、sum関数を使ってtotalの合計を出すと SQL = select id1,id2,sum(total) as total from hoge_table | id1 | id2 | total | | 1 | 10 | 300 | | 5 | 20 | 3300 | | 9 | 30 | 8700 | という結果になるかと思います。 ここで、sum関数で合計させるtotalを、さらにid1で重複を削除したtotalのみを集計したいのです。 つまり、 | id1 | id2 | total | | 1 | 10 | 100 | | 5 | 20 | 1400 | | 9 | 30 | 3000 | という結果を出したいのですが、どうしてもこの結果が得られません。 サブクエリでid1をグループ化させたtotalをsum関数で集計してもやはりだめでした。 何か良い方法は無いのでしょうか? 何卒、ご教授の程、宜しくお願い致します。

    • ベストアンサー
    • MySQL
  • MySQLのSUM関数について

    いつもお世話になっております。 宜しくお願い致します。 MySQLのSUM関数についてお聞きしたいのですが、データベースから特定の条件のカラムだけ合計をするという事はできないのでしょうか? たとえば・・・ hoge_table +------+-------+-------+ | user | data1 | data2 | +------+-------+-------+ | hoge | 1 | 0 | | hoge | 2 | 0 | | hoge | 1 | 1 | | hoge | 2 | 1 | +------+-------+-------+ というデータベースがあり、ここからdata1が1の場合の合計を集計するにはどうすれば良いのでしょうか? さらに、data1が2で、data2が0の場合といった複数の条件を指定して合計を出したいのですが、 方法が思いつきません。 select *, if(data1 = '1',sum('1'),'') as direct_dispatch_1 from hoge_table group by user とやってみたのですが、結果は4になってしまいました。 何か良い方法はございませんでしょうか?

    • ベストアンサー
    • MySQL
  • エクセルのSUM関数について

    SUM関数を使って合計を出す時、値に取り消し線を入れたセルを無視する(計算しない)ようにしたいのですが、どのような関数を使えばよいのか分かりません。教えてください。

  • エクセルで関数SUMなどで

    エクセルで関数SUMなどで 合計を求めた数値が、あるセルにあるとします。 その合計の数値を、そのまま数字として ・・・(関数(計算式)は無くして) 他のセルに貼り付けたいのですが そのような事は出来ますでしょうか・・・。 御教示の程、よろしくお願いいたします。 <m(__)m>

  • Excel VBAの SUM関数について質問です。

    Excel VBAの SUM関数について質問です。 SUM関数で合計の値を出す場合、 SUM(A1:A5)という関数で合計を出しますが SUM(sheet2.cells(1,1),sheet2.cells(5,1)) と言ったようにCellsで指定はできないのでしょうか? 複数の列にVBAのプログラムで合計の値を出したいのです。 WorksheetFunction.SumではSUM(A1:A5)のように 自動計算にならないと思うので・・・

  • エクセル SUM関数

    超初心者です。 SUM関数が合計を計算するための関数だとわかっているのですが、引き算やかけ算をさせてはダメなんですか? たとえば、      =SUM(A1-A2*A3) のような式を入れても、ちゃんとした数値(答え)が出てきてると思うのですが・・・(ーー;)

  • SUM関数を教えてください

    エクセル画面です      A     B     C 1    氏名  点数 2    H氏   10 3    A氏   20 4    S氏   30 5    T氏   40 6    Z氏   50 7    D氏   60 8    合計      S氏を基準としてS氏が(A4)の位置にある場合の合計を出すときの計算式は   B8=SUM(B4:B7)  となります S氏が(A5)の位置に来た場合   B8=SUM(B5:B7)  となります S氏のセルの位置が上下に移動するので SUM関数で範囲を自働的に変動させて計算させる方法を 教えてください よろしくお願いいたします。

  • SUM関数を教えてください

    エクセル画面です      A     B     C 1 2    H氏   10 3    A氏   20 4    S氏   30 5    H氏   40 6    Z氏   50 7     S氏を基準としてS氏が(A4)の位置にある場合の合計を出すときの計算式は   =SUM(B2:B3)  となります S氏が(A5)の位置に来た場合   =SUM(B2:B4)  となります S氏のセルの位置が上下に移動するので SUM関数の範囲を自働的に変動させて計算させる方法を 教えてください よろしくお願いいたします。

  • SUM関数について

    エクセルの関数について質問です。 振込手数料の計算が面倒な為 IF(セル番号="","",IF(セル番号<=30000,"210",IF(セル番号>=30000,"315")))(例) という式を入力してあります。 そして小計にて手数料の合計を出そうとSUM関数を入力したところ 計算が出来ませんでした。 この振込手数料の合計が出せるような関数はどんな式になりますか? お分かりになる方いらっしゃいましたら 宜しくお願い申し上げます。

  • SUM関数について

    色々試したのですが、うまくいきません。 お分かりになる方、是非教えて下さい。 EXCEL2007で =SUM(Sheet1:Sheet2!A1)と数枚のシートの同じセルのトータルを 計算させています。 ところが対象セルに空白が1つでもあり、合計がゼロになる場合、ゼロと表示せず、 空白セルになってしまいます。 対象セルに空白があっても、合計が1以上の場合は答えが表示されます。 IF関数やISBLANK関数を使用してみても、うまくゼロ表示ができませんでした。 どのような数式にすれば、対象セルに空白があり、合計がゼロになる場合、ゼロと表示 してくれるのでしょうか? 是非教えて下さいお願いします。