SQL文でidごとの行数を数える方法
- SQL文を使って、idごとの行数を数える方法を教えてください。
- GROUP BYを使わずに、idごとの行数をカウントする方法を知りたいです。
- テーブル内のデータをidごとにグループ化することなく、行数を数える方法を教えてください。
- ベストアンサー
sql文について教えてください
こんにちは。 質問があります。 id | test_num 01 | test1 01 | test2 02 | test1 02 | test2 02 | test3 03 | test1 以上のテーブルの idごとの行数を数えたいのです。 しかし、 id | id_count 01 | 2 02 | 3 03 | 1 ではなく id | test_num | id_count 01 | test1 | 2 01 | test2 | 2 02 | test1 | 3 02 | test2 | 3 02 | test3 | 3 03 | test1 | 1 というふうにGROUP BYを使わない(使っていないような) ようにしたいのです。 どなたか教えていただけないでしょうか? よろしくお願いします。
- 19746999
- お礼率74% (50/67)
- その他(データベース)
- 回答数1
- ありがとう数1
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
Select db1.id, db1.test_num, (Select Count(db2.id) From TBL_hoge db2 Where db2.id = db1.id) As id_count From TBL_hoge db1; とかでどうでしょう。
関連するQ&A
- SQL文作成のお願い
前提として下記のようなテーブルがあります。 テーブル名:test フィールド: 1)id: varchar, not null 2)name: varchar 3)date: timestamp with time zone, not null このテーブルに下記のようなレコードがあります。 '00001', 'A', '2005-01-01 00:00:00' '00001', 'B', '2005-07-01 00:00:00' '00001', 'C', '2005-11-01 00:00:00' '00002', 'X', '2005-01-20 00:00:00' '00002', 'Y', '2005-07-20 00:00:00' '00002', 'Z', '2005-11-20 00:00:00' ■今やりたいこと このテーブルからidごとにdateフィールド値が最近のレコードを取得したい。 ■やってみたこと 下記SQLを発行しました。 >select id, max(date) from test group by id order by id 結果==> 00001 2005-11-01 00:00:00 00002 2005-11-20 00:00:00 実際はnameフィールドの値も取得したいのですが、group by句を使うとフィールド指定ができませんでした。 ■だめだったSQL select id, name, max(date) from test group by id order by id どのようにSQLを書けばよろしいでしょうか?
- ベストアンサー
- PostgreSQL
- 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のクエリー(sql文)について
[A]テーブルに[CODE.DATE.CHK]とフィールドがあります 内容は、 [CODE][DATE][CHK] 01.2007/06/01.0 01.2007/06/10.1 01.2007/06/11.1 02.2007/05/01.0 02.2007/05/10.1 と、します。 結果を 01.3.2 02.2.1 と、したいのです。 つまり、[DATE]の行数と、[CHK]が1の件数が とりたいのです。 SELECT A.CODE, Count(A.DATE) AS CNT FROM A GROUP BY A.CODE; と、すれば、[DATE]の行数はとれます。 [CHK]が1の件数の取り方が解りません。 宜しくお願い致します。
- ベストアンサー
- その他(データベース)
- SQL文の書き方
次のような列の2つテーブルがあります ID,メッセージ,書いた日 ID,名前 一つ目のテーブルに メッセージを追加していき IDの違う最新のメッセージだけ取り出したいのですが 考えても分からなくて… SELECT ID,MAX(書いた日) FROM 一つ目のテーブル GROUP BY ID の時のIDそれぞれのメッセージが取り出せればいいのですが 最終的には IDの部分は別テーブルにある IDと一致する名前に置き換えて取り出したいと思っています よろしくお願いします データベースはPostgreSQLを使っています
- ベストアンサー
- その他(データベース)
- SQL GROUPで件数の一番多いレコードのみ取る
SQL GROUPで件数の一番多いレコードのみ取る ORACLE10です。 次のようなテーブルがあります。 USER -----------テーブル名 ID,NAME,DATA----列名 1,A,any 1,A,any 1,B,any 2,C,any 3,D,any このテーブルから、IDをGROUPにして、さらに、一番使用頻度の多いNAMEを取得したいのです。 表示したいのは、IDとNAMEです。 つまり、取得結果例は次のようになります。 取得結果例 ID,NAME----列名 1,A 2,C 3,D SQL文をどのように作れば可能でしょうか? ちなみに、IDやNAMEのマスタテーブルはありません。 自分では、「(select ID, NAME, count(*) from USER group by ID, NAME) COUNT」で、COUNTを内部テーブルにして、グループ内で一番多いcount(*)をmaxで取得してみようかと思ったんですが、そこからアイデアが出ませんでした。
- ベストアンサー
- Oracle
- SQL
テーブル仕様は下記のようになっているときに、 mailアドレスには重複したデータが含まれる場合に 全てのデータを取得したいのですが、携帯の重複したデータを省きたいです。 サブクエリーを使って表現しようと思うのですが、どうもうまくいかず。。 numはシーケンシャルナンバーなので、かぶることはないのですが、 何かいい方法はないでしょうか?? 下記のように考えたのですが、どうもうまくいかず。。。 num | id | mail | event | date 1 | 121 | xxxxx@xxx.com | test | 2005-10-11 select * from test_table where 1=1 and event = 'test' and num in(サブクエリー) order by RANDOM() desc limit 3
- ベストアンサー
- PostgreSQL
- SQL文の構築について教えてください。
SQL文の構築について教えてください。 こんばんは。Oracle9iのデータベース検索で、どうしてもSQLが思い浮かばないため、質問させていただきます。 ■Table ID NUM SIGN 100 1 A 100 2 A 101 1 A 102 1 B 103 1 B 104 1 C 首キーはID、NUMです。 上記のようなテーブルで、 IDが同一かつNUMが最大のもので、 SIGNが同一のレコードで、2件以外のレコードを抽出したいです。 (例表でいうと、ID104のレコードのみが抽出されるようにしたい) すこし急ぎなんですが、SQLが得意でお時間がある方、力を貸していただけないでしょうか。 よろしくお願い致します。
- ベストアンサー
- Oracle
- SQL文にて・・・
質問があります。PostgreSQLです。 テーブル(test_tbl)があるとします。 テーブル構成は --------------------------- id ===== char(16) [英数文字格納] point ==== int2 add_date ==== timestamp --------------------------- このテーブルから idが2文字目から'di6ek68dh5ls7g'のレコードを取得したいと考えています。 レコード数がかなりおおいので パフォーマンスを重視したいのですが、 検索SQLがわかりません。 select * from test_tbl where id like '%di6ek68dh5ls7g'だとでると おもうのですが、 これ以上にパフォーマンスがあがる SQLがわかる方お願いいたします。
- ベストアンサー
- その他(データベース)
- 最新の行だけを抽出するSQL文
このジャンルでお願いします。 t1テーブル id name 1 aaa 2 bbb 3 aaa t2テーブル id t1_id num 1 1 10 2 2 100 3 1 1000 4 3 1 このようなテーブル構成で、 t1のnameが「aaa」 かつ t2のidが最新の行だけnumを合計した数値を得たいのですが、 この例だと、 まずt2テーブルの id t1_id num 1 1 10 3 1 1000 4 3 1 が該当して、t2のidが最新の行だけなので id t1_id num 3 1 1000 4 3 1 に絞られて、1000+1で「1001」という結果が得たいのです。 どのようなSQL文にすれば良いのでしょうか?
- ベストアンサー
- MySQL
- SQL文について困っています
ID(NUMBER型)と NUM(NUMBER型)と nenngetu (date型)を持ったテーブルAAAから、 ID=1000 のなかで日時が一番古い処理NOをselectするSQL文を書きましたが上手く実行されません。 select NUM from AAA where nenngetu = (select min(nenngetu) from AAA) and ID=1000; ID=1000の条件をはぶき、 select NUM from AAA where nenngetu = (select min(nenngetu) from AAA); でしたら、実行できました。 oracleで実行しようとしています。 どなたか、書き方を教えてください。
- ベストアンサー
- その他(プログラミング・開発)
お礼
Chronos198さん、はじめまして。 ありがとうございました。 以外にも複雑なSQLだったことに驚きました。 今後もよろしくお願いします。
補足
解決しました!(言い忘れ)