- ベストアンサー
積み上げ棒グラフのためのSQL SELECT文
- Visual Studio Express 2013 for Webでデータベースアプリを作成し、積み上げ棒グラフを作成するためのSQL SELECT文を教えてください。
- データはPerson表にあり、横軸S_Id、縦軸C_Idの数を元に積み上げ棒グラフを作成します。
- 具体的には、S_Id毎にC_Idの数の内訳を示したグラフを作成し、カウント対象はZがNULLでないものになります。
- みんなの回答 (2)
- 専門家の回答
関連する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
- Select文1 マイナス Select文2
テーブルA ユーザーID,地名,県名,評価 テーブルB ユーザーID,県名,制覇flag のような二つのテーブルがあると仮定してSelect文1、 "select 県名,count(地名) from テーブルA where ユーザーID=1 group by 県名 order by count(地名);" の結果が 県名,count(地名) 北海道,30 東京,22 京都,15 名古屋,10 鳥取,9 沖縄,8 であるとし、 Select文2、 "select 県名 from テーブルB where usrid=1 and 制覇flag='true'" の結果が、 県名 北海道 東京 とします。 このSelect文1の結果から、Select文2の結果を引いて 県名,count(地名) 京都,15 名古屋,10 鳥取,9 沖縄,8 の結果を得るにはどうすればよいでしょうか? Mysqlのバージョンは5.0.21です。
- ベストアンサー
- MySQL
- UPDATE文の中でのSELECT文は可能?
タイトル通りなのですが UPDATE文構造の中にSELECT文は使用できるのでしょうか? リファレンス見ても使えそうに無いのでたぶんできないと思うのですが、やりたいことは customer ┌──┬─────┐ │id │frequency │ ├──┼─────┤ │101 │ 2 │ │102 │ 1 │ │103 │ 1 │ │104 │ 2 │ └──┴─────┘ buy ┌──┬──────┐ │id │catalognum │ ├──┼──────┤ │101 │1255 │ │104 │1353 │ │102 │1255 │ │103 │1521 │ │104 │1351 │ │105 │1345 │ │101 │1351 │ └──┴──────┘ 上記のテーブルのcustomerへのUPDATEです。 buy.id個数をCOUNTしてcustomer.frequencyに反映させるということです。 REPLACE内でのSELECTは可能ですが、いちいち全てのfieldを設定してやらないと、他のフィールドがNULLで埋まってしまうので、UPDATE文で更新できるなら比較的楽かなぁと思っています。 ------------------------------- REPLACE文だとこんな感じです REPLACE customer (id,frequency) FROM customer , buy WHERE buy.id = customer.id GROUP BY customer.id ----------------------------- 環境 MySQL 3.23.58 freeBSD PHP 4.3
- 締切済み
- MySQL
- 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なそうなので、気になって質問しました。 よろしくお願いします。
- ベストアンサー
- その他(データベース)
- SQLのSELECT文の集計方法について
SQLのSELECT文についての質問です。 各店舗ごとの利用数を集計したいです。 自分なりに考えて作ってみました。 結果は期待通りなのですが.... このような場合 みなさんだったら、どのようにするのでしょうか? よろしくお願いします。 【店舗テーブル】 TENPO_CD TENPO_NAME 1 ホテル1 2 ホテル2 3 ホテル3 4 ホテル4 5 ホテル5 【利用テーブル】 ID TENPO_CD 1 1 2 1 3 2 4 3 5 1 ・ ・ 【希望結果】 1 ホテル1 3 2 ホテル2 1 3 ホテル3 1 4 ホテル4 0 5 ホテル5 0 select a.tenpo_cd,a.tenpo_name,c.cnt from 店舗テーブル as a left join ( select 利用テーブル.tenpo_cd,count(利用テーブル.tenpo_cd) as cnt from 利用テーブル group by 利用テーブル.tenpo_cd ) as c on a.tenpo_cd = c.tenpo_cd where order by a.tenpo_cd
- ベストアンサー
- その他(プログラミング・開発)
- 割合(パーセント)を求めるにはどのように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
- 入れ子を使わずにレコードの総計を出したい
こんにちわ。PostgreSQLのSQL文について質問させてください。 以下のSQL文を実行したとき、 # select c.id from C c left join S s on (s.id=c.id) where c.num = 1 group by c.id having count(s.id) >= 5; id ---- 7 5 (2 rows) というデータが表示されるんですが、このSQL文で抽出したデータの総件数を求めるにはどうしたらいいでしょうか? 入れ子を使うと、 # select count(*) from (select c.id from C c left join S s on (s.id=c.id) where c.num = 1 group by c.id having count(s.id) >= 5) tmp; というふうに書け、 count ------- 2 (1 row) と表示されるのはわかりますが、入れ子を使わずに上のように表示させるにはどうしたらよいでしょうか? よろしくお願いいたします。
- 締切済み
- PostgreSQL
- SQLのクエリで教えてほしいです。
SQLのクエリで教えてほしいです。 ある列のTOP10を出してグラフを作成したいと考えております。 また、そのTOP10の行をカウントして何件あるかを知りたいのですが なかなか思うように動きません。 以下クエリを作ったのですが、結果に16行の結果(Top16?) になってしまいます。 また、一つのSQLで、Countも含めたいと思ってますが、こういった場合 はどこに記述すればいいのでしょうか。 select TOP (10) Percent hoge from hogehoge group by hoge order by hoge ご存知の方、よろしくお願い致します。
- ベストアンサー
- SQL Server
- in (サブクエリ) わかんない
table hh; +------+ | id | +------+ | 1 | | 2 | | 3 | | 2 | | 1 | | 1 | +------+ select id,count(*) as cou from hh group by id having count(*) in (1,2,3); こいつはOK select id,count(*) as cou from hh group by id having count(*) in (select count(*) from hh group by id); こいつはダメ 違いはなんですか、教えて下さい
- 締切済み
- MySQL
お礼
ありがとうございました。 うまくできました。