- ベストアンサー
count()の結果を別の計算で使うには
count()の結果を別の計算で使うにはどのようにすればいいでしょうか たとえば 表:table1 no val 1 3 2 4 3 6 4 8 5 3 . . でvalが3である個数を数えて10倍かけた値を得たい 場合 selece count(*) from table1 where val = 3 の続きをどのようにすればいいでしょうか よろしくお願いします
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
関連するQ&A
- 複雑なcountについて
val | num ----------- 9984 | 1 1234 | 1 9876 | 1 4567 | 1 9984 | 1 1234 | 1 9984 | 1 以上のようなテーブルで SELECT COUNT(*) FROM table_name WHERE val = 9984 SELECT COUNT(*) FROM table_name WHERE val = 1234 SELECT COUNT(*) FROM table_name WHERE val = 9876 SELECT COUNT(*) FROM table_name WHERE val = 4567 のように4つ実行することなく1度に 9984 => 3 1234 => 2 9876 => 1 4567 => 1 という結果を得たいのですが方法はありますでしょうか? ご教示お願いいたします。
- ベストアンサー
- 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なそうなので、気になって質問しました。 よろしくお願いします。
- ベストアンサー
- その他(データベース)
- mysqlのcountの挙動
mysqlのcountの挙動について教えてください! tableの内容 id,temp_id,sex,create_date 1,aaa,1,2009-01-01 00:00:00 2,bbb,1,2009-01-02 00:00:00 3,bbb,1,2009-01-02 00:00:00 4,ccc,1,2009-01-03 00:00:00 5,ccc,1,2009-01-03 00:00:00 6,ccc,1,2009-01-03 00:00:00 実現したいことは単純で日付を参照し 2009-01-01であればsex=1は1件 2009-01-02であればsex=1は2件 2009-01-03であればsex=1は3件 と表示させたくforeach内で以下のソースで試したのですがうまく取得 できず任意の日付が2009-01-03であっても結果が1となってしまいます。 ※$val2には任意のY-m-d形式の配列の値が入ります。 $res =& $mdb2->query("SELECT Count(sex) AS cnt FROM table WHERE DATE_FORMAT(create_date, '%Y-%m-%d') = '" . mysql_real_escape_string($val2) . "' && sex = '" . mysql_real_escape_string(1) . "' GROUP BY temp_id"); while ($row = $res->fetchRow()) { $data[$key]['man'] = $row['cnt']; }
- 締切済み
- PHP
- count関数の値をwhere句で使用する方法について
宜しくお願い致します。 例えば、下記の様にデータを検索します。 select column1,count(column2) as column2_num from hoge_table group by column2_num すると、検索結果にはcolumn1のそのままの値と、column2の合計数が表示されると思います。 このcolumn2の合計数に対してwhere句で絞込みを行う方法はありませんか? asで定義した値をそのままwhere句で使用できないとの事なので、 select column1,count(column2) as column2_num from hoge_table where count(column2) = '1' group by column2_num とやってみたんですが、検索出来ませんでした。 ご存知の方、ご教授の程、宜しくお願いいたします。
- ベストアンサー
- MySQL
- count(*)のcountをとりたい
現在、以下のようなテーブルを扱っているのですが、 +---------+ |accountid| +---------+ | 999| | 999| | 638| | 638| | 638| | 999| | 999| | 638| +---------+ を、ユニークな件数でとろうとしています。 現在は > select count(*) from TABLE group by accountid; +----------+ | count(*)| +----------+ | 4| | 4| +----------+ 2 rows in set (0.00 sec) などとして、「2 rows in set」を読むと言う方法なのですが、それだと人の手を介さないといけないのでどうにか出力結果をダイレクトに取得したいのです。 SQLサーバで使えるらしい select count(*) from (select count(*) from TABLE group by accountid) as AA; と言うSQL文を使っても無理だったので、どなたか方法をご存じないでしょうか???
- ベストアンサー
- MySQL
- MySQLにてCOUNTした値を更にCOUNT
MySQLにてCOUNTした値を、更にCOUNTする事を1回のSQLにて実行する事は可能でしょうか? ※2回のSQL、プログラミングを介する、EXCELで再集計する等でならCOUNTのCOUNTは求められるのですが…1回のSQLでの回答お願いします。 ユーザーIDと課金額のカラムからなる、以下のようなテーブルがあるとします。 buyテーブル user_id,coin 1,100 5,100 10,200 5,200 5,200 17,100 1,100 2,200 23,500 ユーザー毎の課金回数は下記にて求められますが、 SELECT user_id,COUNT(coin) FROM buy GROUP BY id user_id,count(coin) 1,2 2,1 5,3 10,1 17,1 23,1 count(coin)毎の人数というのはどのように求めればいいでしょうか? いわば下記のような集計結果が理想です。 ※このような結果を1回のSQLにて出力するSQLをズバリ今回の例に沿って知りたいです。 count(coin),count(count(coin)) 1,4 2,1 3,1 ■環境 Apache2 MySQL5 PHP5 ご教授よろしくお願いします。
- ベストアンサー
- MySQL
- COUNTについて
今2つのテーブル(table1には商品IDと商品名、table2にはレシートIDと商品ID)を用い、 table1にある商品がtable2に何回登場しているかCOUNTを用いて数えたいのですが、 1回も登場しない商品が結果に表示されなくて困っています。 以下の様なテーブルを用いています。 [table1] 項目:item_id(主キー)|name 0|"item0" 1|"item1" 2|"item2" [table2] 項目:detail_id(主キー)|item_id(外部キー) 0|0 1|0 2|1 このとき、 SELECT table1.name,COUNT(*) FROM table1,table2 WHERE table1.item_id = table2.item_id GROUP BY table1.name; のようなSQL文だと、結果にitem2が含まれず、 item0とitem1の登場回数だけ表示されてしまいます。 これをitem2は0回登場していることがわかるように出力したいのですが、 どうしたらいいでしょうか。
- ベストアンサー
- MySQL
- COUNTの取得方法(?)について質問があります。
COUNTの取得方法(?)について質問があります。 現在次のSQL文を投げると SELECT ITEM ,COUNT(ITEM) FROM ITEM_MASTER WHERE ITEM IN ('000', '100', '200', '300', '400') GROUP BY ITEM ORDER BY ITEM ; このような結果が返ってきます。 ITEM COUNT(ITEM) ------ ----------- 100 9 200 2 300 1 ITEMの値が000と400の件数は0件なのですが、0件の場合には、 次のように0と表示したい場合はどのようにしたら良いのでしょうか? ITEM COUNT(ITEM) ------ ----------- 000 0 <--ここ 100 9 200 2 300 1 400 0 <--ここ よろしくお願いします。
- ベストアンサー
- Oracle
- count集計の結果が0の場合でも表示したい
基本的なことですみません。 環境はSQLServerのクエリアナライザを使用してます。 内容は題名のとおりです。 例えば table1 fID fName fItemCD 1 山田 01 2 木村 03 3 田中 04 4 佐藤 02 5 高橋 03 6 川島 03 7 山下 06 のようなものがあって、以下のSQL文を処理すると select fItemCD, count(*) as Rslt from table1 where fItemCD in ('04','05','06') group by fItemCD 結果 fItemCD Rslt 04 1 06 1 が返ってきます これを fItemCD Rslt 04 1 05 0 06 1 と結果0件のものも表示したいのですが、いい方法ありますか? よろしくお願い致します。
- ベストアンサー
- SQL Server
お礼
できました。ありがとうございます