• ベストアンサー

sql文について教えて下さい

お世話になっております select文を教えて下さい A   B 123  0 123  0 123  1 123  1 124  0 124  1 124  2 125  0 125  1 125  1 Aの項目でグルーピングしBが0のデータが2件以上あるケースを選択したいのですが良く分かりません。 上記の場合は、A=123のケースだけを選択したいのですが どなたかご教示下さい。 A  B 123  0 123  0 という結果になるようにSQLを組み立てたいのですが よろしくお願いします。

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

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

特定のRDBMSで実行するなら、RDBMS名やバージョンを 書きましょう。 せっかくSQLを具体的に教えてもらっても、あなたの 環境では実行できないかも知れません。 情報処理技術者試験の受験対策といった理由なら、 そういった情報を書きましょう。 特定のRDBMSの独自機能を使ったSQLを教えられても、 正解にはなりません。 B=0での抽出なので、A列の値だけ分かればいいなら、 以下のようなSQLでいいと思います。 select A from T1 where B=0 group by A having count(*)>=2; 他にC列などがあり、その値も得たいということなら、 以下のようなSQLでいいと思います。 select A,C from T1 where A=(select A from T1 where B=0 group by A having count(*)>=2 ) and B=0; また、#1回答者さんのSQLでも大丈夫だと思いますが、 不要な括弧が多いので簡単に書くと、以下のように なります。 select A,C from T1 as x where (select count(*) from T1 as y where x.A=y.A and y.B=0)>=2 and x.B=0; 私が使っているRDBMSでは、列(A,B)にインデクスを 付けた場合、二番目のSQLの方が、効率的にインデクス が使われるようです。

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

その他の回答 (1)

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.1

SELECT jiji.A, jiji.B FROM jiji WHERE (((jiji.B)=0) AND (((select count(*) from jiji as jiji2 where jiji2.A=jiji.A and jiji2.B=0))>1));

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

関連するQ&A

  • 条件文を使ったグループ出力SQL文

    SQL初心者です。な~んだこんな事くらいと言わず教えてください。 テーブルに A B C ------------ 5 a b 7 c d 4 a d 5 f b ------------ というデータがあります。 これを Bの列については、aとa以外 Cの列については、bとb以外 というようにグルーピングして、合計値を出したいと思っています。 結果として a b 5 a b以外 4 a以外 b 5 a以外 b以外 7 という形の出力イメージです。 調べてみてcase when文を使えばいいなんてことをなんとなく理解しているのですが、group byと組み合わせてどのようにSQL文を書けばいいかわかりません。 SQL Serverを使っています。ご存知の方、ご教授ください。

  • SQL文

    SQLの初心者です。 Aテーブル(a項目,b項目,c項目)とBテーブル(a項目,d項目,e項目)のテーブルがあります。 d項目順でAテーブルの項目のみ出力するにはどうしたらいいのでしょうか。 例えば次のSQL文ではd項目順で出力されますが結合の為、AテーブルとBテーブルの全項目が出力されます。 SELECT * FROM Aテーブル LEFT OUTER JOIN DITKM ON Aテーブル.a項目 = Bテーブル.a項目 ORDER BY Bテーブル.d項目 次のSQL文のようにAテーブルの項目を選択したらAテーブルの項目のみ出力する事はわかります。 SELECT a項目,b項目,c項目 FROM Aテーブル LEFT OUTER JOIN DITKM ON Aテーブル.a項目 = Bテーブル.a項目 ORDER BY Bテーブル.d項目 今回はAテーブルの項目数が少ないのでこれでもいいのですが、項目数が多くなると大変です。 上の様に項目を選択しないでAテーブルの項目を全て出力する事は可能なのでしょうか。 宜しくお願い致します。

  • SQL文の書き方について

    お世話になります。下記のような結果を求めるSQL文についてどなたかご教示をお願いします。 以下の2つのテーブル(SMPL_TBL1,SMPL_TBL2)があったとします。 (SMPL_TBL1) ID | NAME | BUSHO ---+--------+--------- 01 | YAMADA | A_GRP 02 | SUZUKI | A_GRP 03 | OKADA | B_GRP 04 | TAKAGI | C_GRP (SMPL_TBL2) ID | POINT | ---+-------+- 01 | 1 | 01 | 2 | 01 | 3 | 02 | 1 | 02 | 2 | 03 | 1 | 04 | 1 | 04 | 2 | 04 | 3 | 04 | 4 | 04 | 5 | 上記テーブルから以下のような結果を得たい場合、 どのようなSQL文を投げればいいでしょうか? (求める結果) ・各人ごとのPOINTのMAX値と各人のデータを抽出(POINTは1~999までの整数です) ID | NAME | POINT| BUSHO ---+--------+------+-------- 01 | YAMADA | 3 | A_GRP 02 | SUZUKI | 2 | A_GRP 03 | OKADA | 1 | B_GRP 04 | TAKAGI | 5 | C_GRP よろしくお願いいたします。

  • SQL文がわかりません。

    SQL文がわからなく困っております。 下記のデータ*01を*02のデータのようにSELECTするためには、 どのようなSQL文を書けばよいのかお教えいただけますでしょうか? DBはoracle11gです。 ※01 ID      所属部署 _____________________________    1     a    1     b     2     a    2     b    2     c    3     a    3     b    3     c    3     d ____________________________ ↓↓↓↓↓↓↓↓↓↓↓↓↓↓ ※02  ID   所属部署    所属部署2   所属部署3   所属部署4 _________________________________________   1         a         b 2         a         b         c 3         a         b         c         d

  • SQL文にて

    調べたり聞いたりしたのですが なかなか解らなかったので、質問させてください。 AテーブルとBテーブルとがあり、Aテーブルのみにしか 存在しないデータを一発で取得することはできるのでしょうか? Aテーブルのデータ数(100件) Bテーブルのデータ数(80件) Aのキー項目とBのキー項目とは同一です。 処理をしたい事はAとBとでAにしか存在しないデータを ループせずに一回のSQLで行えたらと思っています。

  • 2つの情報を1つのSQLで取得する方法について

    お世話になります。 SQL文で、下記内容のデータを取得する方法がわかりません。 ・TESTテーブルからA、B、Cの3項目のデータを取得する。 ・但し、この中のC項目については、WHERE句の条件を満たす データの最大値を取得する。 ・項目AおよびBの取得条件は、項目Cと同一条件とする。 ・目的は、項目AおよびBに関しては、WHERE句の条件を満たす  全てのレコードを取得し、項目Cにおいては最大値のみ取得したい。 上記内容を取得しようと考えた場合、 現時点で下記のSQL文を作成して実行しましたが、 うまくデータが取得できません。 SELECT A, B, C FROM TEST WHERE C = (SELECT MAX(C) FROM TEST) AND Z = 'xxxxx' AND Y = 'x' AND X = 'Y' ※項目X, Y, ZはTESTテーブルのカラムです ※上記SQLを、A、Bのみ取得用とCのみ取得用に   それぞれ分解して実行すると、それぞれの結果は   正常に取得できます。 2つの結果を1つのSQLで取得することは可能でしょうか? どなたかご教授願えますか?よろしくお願いいたします。

  • SQL文の書き方について

    SQL文の書き方について教えてください。 VBでSELECT分を書く場合、表示項目の間に空白(スペース)を入れて書きますが、これってレスポンスに影響が有りますか? 例 SELECT A,       B,       C FROM TBL という具合に記述します。 自分の経験上だと、レスポンスには影響がでないと思いますがどうなんでしょうか・

  • “SQL文を作るSQL”の書き方ってありますか?

    “SQL文を作るSQL”の書き方ってあるのでしょうか? 例えばなのですが、表同士を大量に結合して条件に当てはまったものをアップデートするようなSQLを書く場合、文法を間違うとエライこちゃ!になる場合がありますよね。 そういう場合って結合するんじゃなくて結合したSELECT文を使って条件だしをして1件1件単純アップデートをした方が安心ですよね。 (定期処理であれば効率が悪いですが・・・だったらプロシージャですか・・・というところになりますがごくたまにや1回きりのデータ変更など) そういったことをやるほうほうはありますでしょうか? 仕様はSQL99です。

  • SQL文を教えてください

    A B C --------- 11 22 33 44 55 33 上記のように、同じ値を持つレコードが2件以上あるC列の値を取得するにはどのようなSQL文にすればよいでしょうか。 よろしくお願いします。

  • こんなSQL文

    Oracle8.1.7を使用しております。 以下のようなテーブルに対し、1行目と2行目を削除するSQL文を書きたいのですが、思いつきません。どなたか、アドバイスいただけないでしょうか? 表名:A   B | C ――――――――   2 | 10   2 | 1   1 | 10   1 | 1   1 | 11   1 | 2   1 | 1   3 | 10   2 | 3 変数として、P1=1とP2=2があります。(これは、SQL文の中に直接書くものとします。) ここで、SELECT B,C FROM A WHERE B=1;とSELECT B,C FROM A WHERE B=2;を実行すると、次のようになります。   B | C     B | C ――――――――― ―――――――――   1 | 10    2 | 10   1 | 1     2 | 1   1 | 11    2 | 3   1 | 2   1 | 1 ここで、それぞれの表を見ると、Cの値が一致している部分があります。この一致していて、Bが2の行を削除したいのですが、SQL1文では無理でしょうか? 最近、SQLには慣れてきたつもりだったのですが、こんなとこでつまずくとは・・・どうぞよろしくお願いします。

このQ&Aのポイント
  • 昨日まで正常に動作していたプリンターとPCの接続が突然できなくなりました。製品のWi-Fi設定やPCのドライバー再インストール、有線接続などを試しましたが、問題は解決しません。スキャナーは正常に動作しています。
  • Windows10のパソコンと無線LANによる接続環境で、プリンターとPCの接続ができません。問題が発生する前までは正常に使用できていましたが、突然接続できなくなりました。製品の設定やドライバーの再インストールなどを試しても改善しませんでした。
  • プリンターとPCの接続ができないトラブルに直面しています。昨日まで問題なく使用できていたのですが、今日になって接続ができなくなりました。Wi-Fiの設定やPCのドライバー再インストール、有線接続などの方法を試してみましたが、解決できませんでした。スキャナーは正常に動作しています。
回答を見る