
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ランキング
-
<SQL>重複しているデータの場合...
-
SQLで、同じ値が何回連続す...
-
複数のテーブルから値を合計出...
-
どんなSQL文にすればいいか悩ん...
-
SQLです教えてくださいお願いし...
-
sql serverのsqlについて
-
mysqlでunixtimeによる日付範囲...
-
SQLローダーCSV取込で、囲み文...
-
テーブルの最後(最新)のレコー...
-
単一グループのグループ関数で...
-
Oracleで「文字が無効です」の...
-
並べ替えについて
-
group byの並び順を変えるだけ...
-
トランザクションログを出力せ...
-
select文の実行結果に空白行を...
-
ファイルの漢数字の順番につい...
-
ハイフンの入ったデータの並べ替え
-
SQL文 複数実行
-
テーブルレーコードをソートし...
-
ACCESSのクエリで空白以降を別...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
<SQL>重複しているデータの場合...
-
複数のテーブルから値を合計出...
-
最新の日付と2番目の日付のデー...
-
【ExcelVBA】入力された日付か...
-
LIKE検索で範囲指定の方法
-
項目以外の文字列は連結できま...
-
日付
-
Mysqlについて、どの程度の処理...
-
SQLで、同じ値が何回連続す...
-
検索を繰り返す?
-
日付
-
mysqlでunixtimeによる日付範囲...
-
MySQLにおける条件/公開日を指...
-
PHPとMYSQLを使用したデータベ...
-
日付検索で0001-01-01 00:00:00...
-
windows7のmysqlで今日の日付か...
-
型変換
-
効率の良いSQL文の書き方を教え...
-
SQLです教えてくださいお願いし...
-
日付や日時を格納する場合の型...
おすすめ情報