
No.5ベストアンサー
- 回答日時:
>group byでユニークになっているのですね。
勘違いしてはいけないのは、データが単にユニークなだけで、ユニークな属性は
ついていないということです。
もしさらにそのテーブルからリレーションするのであれば、なんらかの
属性はつけた方がよいかもしれません
>もう一つ質問ですが。ここで作ったテーブルを別のテーブルを日付でjoin
>したいのですが。この時の日付はインデックスの指定が要るのでしょうか。
であれば「create table xt」するときに適正なインデックスをつくっておいた方がよいでしょう。
もちろん後付けでalter tableで追加することもできます
有難う御座いました。
矢張り、インデックスは必要だと言う事ですね。
分かりました。これで、全体がすっきりと見えて来ました。
これで最後です。最後迄有難う御座いました。
No.4
- 回答日時:
>実はテーブル作成に付いては、No.2の回答で満足しています。
>後出しで済みませんが、実はこのNo.2のテーブルの日付にunique
>の設定でインデックスを設けたいのですが。
uniqueつけなくてもgroup byのキーになっているのユニークですがどうしてもやりたい?
そういう場合はcreate tableで先にテーブルをつくっておくだけです
//元データ
create table hoge (日付 date,id int,size varchar(10));
insert into hoge values('2016-02-01',1,'S'),('2016-02-01',2,'S'),('2016-02-01',3,'M'),('2016-02-02',4,'L'),('2016-02-02',5,'L'),('2016-02-03',6,'L'),('2016-02-04',7,'S');
//テーブル作成
create table xt(日付 date not null unique,S int,M int,L int ,合計 int);
//単純なデータ投入
insert into xt
select 日付,sum(size='S'),sum(size='M'),sum(size='L'),=count(*)
from hoge
group by 日付;
//ユニークな日付が競合したときにアップデートする
insert into xt
select 日付,@s:=sum(size='S'),@m:=sum(size='M'),@l:=sum(size='L'),@sum:=count(*)
from hoge
group by 日付
on duplicate key update S=@s,M=@m,L=@l,合計=@sum
有難う御座います。
group byでユニークになっているのですね。
分かりました。
もう一つ質問ですが。ここで作ったテーブルを別のテーブルを日付でjoin
したいのですが。この時の日付はインデックスの指定が要るのでしょうか。
そこの部分が心配だったので。
どうなんでしょうか。
済みません。回答願います。
No.3
- 回答日時:
>テーブル作成クエリーでテーブルを作りたい
「テーブル作成クエリー」についてはよくわからないので
どこまで自動化できるかによりますね。
むしろピボットテーブルを先行して作っておけば比較的楽に処理はできると思いますが・・・
例えばこう
create table hoge (日付 date,id int,size varchar(10));
insert into hoge values('2016-02-01',1,'S'),('2016-02-01',2,'S'),('2016-02-01',3,'M'),('2016-02-02',4,'L'),('2016-02-02',5,'L'),('2016-02-03',6,'L'),('2016-02-04',7,'S');
//ピボット
create table pt(size varchar(10),S int,M int,L int,合計 int);
insert into pt values('S',1,0,0,1),('M',0,1,0,1),('L',0,0,1,1);
//実行
select 日付,sum(S) S,sum(M) M,sum(L) L ,sum(合計) 合計
from hoge inner join pt using(size)
group by 日付;
これをプロシージャをつかって半自動化することは可能ですが、ちょっと処理が面倒です
有難う御座います。
実はテーブル作成に付いては、No.2の回答で満足しています。
後出しで済みませんが、実はこのNo.2のテーブルの日付にunique
の設定でインデックスを設けたいのですが。
出来るのでしょうか。これで最後になると思いますが。
宜しくお願いします。
No.2
- 回答日時:
create table クロス集計
as select
日付
, sum(case size when 'S' then 1 else 0 end) as S
, sum(case size when 'M' then 1 else 0 end) as M
, sum(case size when 'L' then 1 else 0 end) as L
, count(*) as 合計
from 収穫
group by 日付
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
mysqlのupdate構文についての質...
-
MAMP 99ドル約1.6万円 高い...
-
(初心者)MySQLやmaraDBで、crea...
-
#1062 - '0' は索引 'PRIMARY' ...
-
エラー 1068 (42000): 複数の主...
-
SQLです教えてくださいお願いし...
-
SQLです教えてください。
-
SQLです教えてくださいお願いし...
-
SQLです教えてくださいお願いし...
-
utf8bomとutf8mb4の違いがいま...
-
SQLです教えてくださいお願いし...
-
東京23区を、皇居を中心とした...
-
mysqlがインストールされている...
-
SQLでカラムを追加し、条件に合...
-
SQLです教えてくださいお願いし...
-
テーブル:生徒名簿 生徒名簿の...
-
SQLです!!教えてください。あ...
-
同一日に複数レコードがある場...
-
SQLを作ったのですがうまくいき...
-
SQLあってますか?こう?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
何にかが違うから エラーなんで...
-
mysqlがインストールされている...
-
エラー 1068 (42000): 複数の主...
-
#1062 - '0' は索引 'PRIMARY' ...
-
テーブル名が可変の場合のクエ...
-
SQLでカラムを追加し、条件に合...
-
mysqlの配列データの読み方
-
SQLで漢字名称を都道府県や市区...
-
mysqlのupdate構文についての質...
-
htmlコードで書かれた表にphpで...
-
SQLを作ったのですがうまくいき...
-
【初歩】ラジオボタンをつかっ...
-
SQLです教えてください。
-
東京23区を、皇居を中心とした...
-
SQLです教えてくださいお願いし...
-
LIMIT で条件を満たしているの...
-
MAMP 99ドル約1.6万円 高い...
-
〜のような結果を出すためのSQL...
-
SQLです教えてくださいお願いし...
-
このSQLあってますか?教えてく...
おすすめ情報