• ベストアンサー

SQLのクエリで教えてほしいです。

SQLのクエリで教えてほしいです。 ある列のTOP10を出してグラフを作成したいと考えております。 また、そのTOP10の行をカウントして何件あるかを知りたいのですが なかなか思うように動きません。 以下クエリを作ったのですが、結果に16行の結果(Top16?) になってしまいます。 また、一つのSQLで、Countも含めたいと思ってますが、こういった場合 はどこに記述すればいいのでしょうか。 select TOP (10) Percent hoge from hogehoge group by hoge order by hoge ご存知の方、よろしくお願い致します。

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

  • ベストアンサー
  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.1

TOP (10) Percentと書くと、「上位10件」ではなく「上位10%」になります。 何がやりたいのか3分考えて、ようやくわかりました。たぶんこういうことでしょうかね。 SELECT TOP 10 hoge,COUNT(*) FROM hogehoge GROUP BY hoge ORDER BY COUNT(*) DESC

Snoop15
質問者

お礼

ありがとうございます。 まさしくやりたい事はその通りでした。 助かりました~

関連するQ&A

  • sqlのクエリについて

    C#からデータベースsql server 2008にデータセット、データリードする簡単なアプリを作りました sqlのクエリについて質問です リードしたデータのTOP行と最終行の2つのレコードを取得する場合どうすればいいでしょうか? select TOP A,B,C From test WHERE なら TOP行のみになってしまいます 最終行のレコードの取得方法は、いい方法が思い浮かびません。 欲しいのは、TOP行と最終行の2行のみなので、困ってしまいました。 知恵をお借り願えればと思います。 よろしくお願いいたします。

  • SQLのクエリーで・・・

    SQL2000を使用しています。(Transact-SQL?) 項目1・項目2・項目3には、それぞれ6桁固定の数字が入っているとします。 この3項目から重複無しの件数をカウントしたいのですが (Group byをして更に全体の件数を取得したい) select count(distinct 項目1+項目2+項目3) from テーブル名 という書き方でも問題ないでしょうか? 他にもっとスマートな方法があれば教えて頂けませんか?

  • 個数をクエリで求めたい

    記号番号 A  1 A  1 A  2 B  2 というテーブルがあるのですが、 これを クエリで 記号  番号 個数 A      1    2 A     2    1 B     2    1 という結果を出すにはどのようなSQL文を作ればよいでしょうか? SELECT Count([テーブル1].記号) AS 記号のカウント, Count([テーブル1].番号) AS 番号のカウント FROM テーブル1; これだと、 記号のカウント 番号のカウント 4            4 という結果になります。

  • 割合(パーセント)を求めるにはどのようにSQLを書けばよいのでしょうか?

    SQLで グループ毎にカウントした数でなくて割合を求めたいのです。 select name, count(*) from データベース名 group by name order by 2 desc; とすると、以下のように200件あるデータで グループ(名前)毎に個数が表示されますが、 田中 70 上村 120 橘川 10 下のように割合(パーセント)を求めるにはどのようにSQLを書けばよいのでしょうか? 田中 70 35% 上村 120 60% 橘川 10 5%

    • ベストアンサー
    • MySQL
  • SQLの結果が返ってこない

    PHP+mysqlで以下のようなSQL文で処理を行ったのですがデータが返ってきません。 $sql = 'SELECT * FROM books WHERE id=3'; $recordSet = mysql_query($sql); if(mysql_fetch_assoc($recordSet)){ while ($table = mysql_fetch_assoc($recordSet)) {        処理     } } mysqlの画面で SELECT * FROM books WHERE id=3 を入力してみるとしっかりと結果が返ってきます。 ちなみに1行目を、違うテーブルの $sql = 'SELECT * FROM podcast WHERE code=3 ORDER BY dcdate DESC LIMIT 0,3'; にしてみると、データが表示されます。 2日間かけてずっと試行錯誤してみたのですが、完全に行き詰ってしまったので、何か考えられる原因はありませんでしょうか。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • SQLの集計で「全て」の合計も表示したい

    SQLの集計について教えて下さい。DBはSQLiteかMySQLです(下記テストはSQLiteにて) 「meibo」テーブルから結果(1)を表示するにSQL文(1)で実現できました。 ●meiboテーブル name    type  univ ---------------------------------- 鈴木一郎  国立  東大 高橋ニ郎  国立  東大 田中三郎  国立  京大 山本四郎  公立  大阪府立大 佐藤五郎  私立  慶応大 小川六郎  私立  早稲田大 ●結果(1) type別の人数 type   合計 ------------------- 公立   1 国立   3 私立   2 ●SQL文(1) SELECT type, count(name) FROM meibo GROUP BY type ORDER BY type ; ここに「全ての合計」行を加えて結果(2)を表示したい場合、1つのSQL文で可能でしょうか? それともSQL文(2)のように2つの文で行なうか、SQL文(1)の結果をプログラム側で処理して全ての合計を得るなどするしかないでしょうか?(typeの「全て」は無くても構わない) もし1つのSQL文で可能ならどういう風になるのでしょうか? ●結果(2) type   合計 ------------------- 全て   6     ←この行を追加したい 公立   1 国立   3 私立   2 ●SQL文(2) SELECT type, count(name) FROM meibo ; SELECT type, count(name) FROM meibo GROUP BY type ORDER BY type ;

  • SQLのcount()とgroup by

    以下のようなテーブルがあったとき、 tbl1 id | score 1 | 100 1 | 200 1 | 300 2 | 200 2 | 100 3 | 300 3 | 400 3 | 500 3 | 600 idでまとめて個数を出すとすると、 SELECT count(*) FROM tbl1 group by id とすれば count(*) 3 2 4 と結果が返ってきますが、この結果にidを足して id | count(*) 1 | 3 2 | 2 3 | 4 というようなSQLはどうやって書けばいいのでしょうか? MySQLでは、 SELECT id, count(*) FROM tbl1 group by id と書けるのですが、これは標準的なSQLではNGなそうなので、気になって質問しました。 よろしくお願いします。

  • Access97のクエリーでのDISTINCTROW について

    Access97のクエリーでのDISTINCTROWの解読の仕方がわからず困っています。 SELECT DISTINCTROW テーブル1.番号, テーブル1.D名, テーブル1.E名, FROM テーブル1 WHERE (((テーブル1.番号) In (SELECT [番号] FROM [テーブル1] As Tmp GROUP BY [番号] HAVING Count(*)>1 ))) ORDER BY テーブル1.番号; このSQL文はどういう条件のデータを選択する意味なのでしょうか。 教えてください。

  • Acess2003で複雑なSQL?

    Access2003で以下のSQLを実行させることはできるのでしょうか? 直接SQLで実行する方法と、Access独特の両方で実行する方法が知りたいです。 select name, count(*) from テーブル group by name order by 2 desc;

  • DB2の行指定検索SQLについて

    select * from table where col1='X' order by col2; のようなselect文のXX行目~YYY行目の結果を返したい場合のSQLは、どのように作成すればよいのでしょうか?散々調べましたが、回答が見当たりませんでした。 どなたかご存知のかたいらっしゃいましたらご教授ください。