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で質問しましょう!
似たような質問が見つかりました
- Oracle sqlで質問です。 aテーブルとbテーブルがあり、下記のsqlで取得したidとnameに一致しないレ 1 2022/04/20 20:34
- Oracle 下記のsqlで取得されるレコード以外を取得する方法ありますでしょうか。 SELECT B.番号, B 2 2022/04/20 23:21
- Excel(エクセル) 複数セルデータを別シートの単一セルにコピーしたい。(詳細をご参照ください) 1 2022/12/14 15:08
- Oracle sqlで質問です。 idを元にidに紐付くデータで住所コードがjpのみのデータ以外のidを取得したい 4 2023/03/20 17:41
- Oracle sqlで質問です。 Aテーブルの情報をBテーブルに更新かけたいです。 やりたいことは、Bテーブルの受 1 2023/05/17 11:17
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
- Oracle 質問です。 下記のテーブルとデータがあり、 取得想定結果のように出力したいです。 下記のsqlだと0 2 2023/05/23 19:10
- PHP PHP MySQLに画像を直接保存 2 2022/06/05 11:50
- 統計学 t値の計算方法 1 2022/11/29 18:37
- Oracle sqlで質問です。 Aテーブルの登録番号をキーにBテーブルから確認番号を取得したいのですが、Bテーブ 4 2023/05/18 13:08
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
<SQL>重複しているデータの場合...
-
複数のテーブルから値を合計出...
-
最新の日付と2番目の日付のデー...
-
SQL 重複しないJoinの仕方を教...
-
mysqlに格納されている日付のデ...
-
サブクエリを使わない方法
-
レコードのコピー
-
Mysqlで最新の日付を持つデータ...
-
mysqlでunixtimeによる日付範囲...
-
SQLローダーCSV取込で、囲み文...
-
select文の実行結果に空白行を...
-
単一グループのグループ関数で...
-
count関数の値をwhere句で使用...
-
where句中のtrim関数について
-
文字2桁、3桁交じりの文字列...
-
【MySQL】 DECIMAL(2,1) に 13...
-
int型フィールドにnullを登録で...
-
【PL/SQL】FROM区に変数を使う方法
-
データ
-
group byの並び順を変えるだけ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
<SQL>重複しているデータの場合...
-
複数のテーブルから値を合計出...
-
最新の日付と2番目の日付のデー...
-
日付検索で0001-01-01 00:00:00...
-
SQLで、同じ値が何回連続す...
-
SQL 重複しないJoinの仕方を教...
-
SQLです教えてくださいお願いし...
-
DISTINCTROWについてです。
-
MySQLのdatetime型に0月0日を格納
-
mysqlでunixtimeによる日付範囲...
-
NULLは表示順最下位
-
日付・・・insertとselect
-
項目1の日付順に並べ項目2の...
-
先期末日の日付を求めるSQL
-
下記の問合せを行うクエリを、 ...
-
【ExcelVBA】入力された日付か...
-
MySQLで特定のグループの上位3...
-
SQL文の作成について
-
Mysqlで最新の日付を持つデータ...
-
レコードのコピー
おすすめ情報