• ベストアンサー

select文

select文の質問なんですが、広告のデータでクリック数と売り上げを毎日取っていたとして、広告毎に累計のデータを見るときは、 select 広告名, sum(クリック数), sum(売り上げ) from 売り上げテーブル group by 広告ID 上記のsql文で取得できるかと思うのですが、取得する際にクリック数の合計でソートをかけたい場合には、どのようにすればよろしいのでしょうか? 上記の文にただ、order by クリック数を記述しても、1レコード単位でソートしてしまうため困っております。

  • MySQL
  • 回答数2
  • ありがとう数2

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

別名宣言して、別名でソートをかけます select `広告名`,sum(`クリック数`) AS `クリック計`, sum(`売り上げ`) AS `売り上げ計` from `売り上げテーブル` group by `広告ID` order by `クリック計` desc

makeworld
質問者

お礼

参考になりました、ありがとうございます。

その他の回答 (1)

  • geso775
  • ベストアンサー率29% (15/51)
回答No.1

検索結果を一度表にしてorder byをかけるとよいでしょう。 select * from ( select 広告名, sum(クリック数) click, sum(売り上げ) sell from 売り上げテーブル group by 広告ID ) order by click *フィールド名はお好みで。

makeworld
質問者

お礼

参考になりました、ありがとうございます。

関連するQ&A

  • SELECT文のソートについて

    SQLのSELECT文で抽出した列Aの値が、例えば1~12であるとして、それを4~12、1~3という具合にソートしたいのですがやり方がわかりません。 ORDER BY句を使えばいいのか、それとも全く別の方法を使うのか教えてください。 よろしくお願いします。

  • 複数のSELECT文の結合について

    $sql = "(SELECT * FROM hospytal WHERE shochi LIKE \"%$keyword%\") UNION (SELECT * FROM hospytal order by kuchikomi desc);"; // 口コミ数の降順 このSQL文は間違っているでしょうか。 やりたいことは、hospytalテーブルのshochiカラムでキーワードを含むものを、 降順にソートしたいのですが。 どうすればちゃんと動作するのか、ご教授お願い致します。

    • ベストアンサー
    • MySQL
  • SELECT文でこんなことはできるでしょうか?

    例えば、日付別の売上のリストを作る場合に SELECT date,SUM(kingaku) AS goukei FROM uriage WHERE date BETWEEN '2007/01/01' AND '2007/01/31' GROUP BY date ORDER BY date を発行して, date goukei 2007/01/01 10000 2007/01/03 20000 2007/01/04 30000 2007/01/06 20000 2007/01/07 40000 2007/01/08 50000 ・・・ を取得したとして、 これを date goukei 2007/01/01 10000 2007/01/02 0 2007/01/03 20000 2007/01/04 30000 2007/01/05 0 2007/01/06 20000 2007/01/07 40000 2007/01/08 50000 ・・・ というように、データが1件もない日付も 間にはさむ方法はあるでしょうか? 以上、よろしくお願いします。

  • SELECT文のソート条件

    PL/SQLのカーソル定義にて困っています。 SELECT文のORDER BYでソートをかけますが、 例として、引数を2つ与えとします。 2つの値が同値であった場合、次にソートの条件となるのは何なのでしょうか? GROUP BY,WHERE句等はありません。 初歩的な質問過ぎて逆に中々見つけられませんでした。 どなたかご存知の方、教えて頂けますでしょうか。 よろしくお願いします。

  • SQLServerのselect文でデータ数1万くらいのDBから

    SQLServerのselect文でデータ数1万くらいのDBから top n と order by つきで取得したときに、 10秒以上かかってしまいます。 top n だけや order byだけであれば、そんなにかかりませんが、 同時に扱う場合、なぜこんなに時間がかかってしまうのでしょうか?

  • select文について

    1つのデータの前後のデータを取得する場合、何か簡単に取得するselect文はありますでしょうか? 例) no name adress 1  山田  東京 3  山本  名古屋 6  田中  大阪 7  高橋  福岡 上記のようなテーブルがあった場合で、noが6の前後のデータを取得する場合、以下のように考えてみましたが他に簡単にデータを取得する方法はないでしょうか? なお、noが6の前後の数字(3や7)は変更される場合がある為、select文の際にno=3やno=7と固定する事は出来ません。 ・noが6の前のデータ(noが3)のデータを取得する場合 select adress table where no<6 oder by no limit 1 ・noが6の次のデータ(noが7)のデータを取得する場合 select adress table where no>6 oder by no limit 1 分かりにくい説明で申し訳ありませんが、どなたかよろしくお願いいたします。

    • ベストアンサー
    • MySQL
  • もうちょっと賢いSELECT文が書けないものでしょうか

    初めまして、最近SQLをかじり始めたぺーぺーです。 効率の悪いSELECT文しか書けずに困っています。 下記のテーブルsoftware_tableから、 ・name列「oracle」 ・version値が最大 のレコードに含まれるid(=3)を拾ってきたいのですが、自分の頭では副問い合わせを使う方法か、ソートを使う方法しか思いつきません。 問題は副問い合わせ・ソートを使うと計算コストが大きくなってしまうことで、できることなら副問い合わせ・ソートを使わずに解決したいのですが、何か方法はないものでしょうか? よろしくお願い致します。 ----------------------------- software_table id name version 1 oracle 1 2 oracle 2 3 oracle 3 4 postgres 1 5 postgres 2 6 postgres 3 7 postgres 4 ----------------------------- ■副問い合わせを使った方法 SELECT id FROM software_table WHERE name = 'oracle' AND version = (SELECT max(version) FROM software_table WHERE name = 'oracle'); ■ソートを使った例 SELECT id FROM software_table WHERE name = 'oracle' ORDER BY version DESC LIMIT 1 OFFSET 0; -----------------------------

  • SQL-SELECT文でのソート

    VB2010とmdb(Ms-Access)にてシステムを構築しています。 Select文にて取得したレコードをDatagridviewにて表示しようとしているのですが SQL="SELECT * FROM table ORDER BY ID" 当のシンプルなものだと表示できるのですが 特定の文字列順にソートしたくCASE WHENを使用して SQL = "SELECT * FROM table ORDER BY CASE BUPPIN WHEN '○○' THEN 1 WHEN '△△' THEN 2 ELSE 0 END" のようにSQLを書いてみたのですがデータアタプタにてデータテーブルに結果を入力させる際にエラーが出てしまいます。 構文間違いでしょうか? ご教授お願いします

  • セレクト文について

    sqlのセレクト文について質問させて下さい。 フィールドのレコードに、a,b,c,d,eと登録されているデータから、"c"のデータだけをセレクト対象にしたい場合、どのようにsqlを書けばよいのでしょうか? 通常のセレクト文だと、WHERE句に、(フィールド名 = '値')などで格納されている値とデータの比較ができるかと思うのですが、上記のような場合はどのように指定するのでしょうか? フィールドを無駄に増やし過ぎないよう、カテゴリごとに配列をjoinでまとめたものをDBへ登録しているのですが、この場合だとイメージしているようなことは無理なんでしょうか? 宜しくお願い致します。

    • ベストアンサー
    • PHP
  • 検索が速くなるSQL文を教えてください

    データベースに、例えば辞書に載っている単語が1000万件分入っているデータベースがあるとします。 このデータをあいうえお順に昇順にソートした上で、500万番目から30個のデータ(つまり、5,000,000番目~5,000,029番目)までのデータを取り出したいです。 このようなケースで検索がもっとも高速になるSQL文の書き方はどのような描き方になるのでしょうか? SELECT keyword FROM table ORDER BY keyword OFFSET 5000000 LIMIT 30 と書いたのですが、すごく遅いです。OFFSETが0であればとても速いです。