create table table1(id int,合計 int,目標 int,実績 double);
とした時に、実績を一発で出したい。
実績は、(過去の合計の累計/過去の目標の累計) * 100で求める。
例えば例として下記の様になります。
id 合計 合計の累計 目標 目標の累計 実績
1 2 2 3 3 66.67
2 1 3 3 6 50.00
3 1 4 3 9 44.44
4 2 6 3 12 50.00
5 1 7 3 15 46.67
6 1 8 3 18 44.44
7 2 10 3 21 47.62
現在は、一発では出来ないので個々に個別で求めています。
1. 合計の累計を出す
2. 目標の累計を出す
3. 実績を出す
ここでは、実績だけあれば良いので合計の累計とか目標の累計も本来は
不要ですが。実績の出し方が分からないのでテーブルにフィールドを入
れています。
これをテーブルに一括してidと合計と目標だけで実績を保存をすると言
う事は出来るのでしょうか。
宜しく回答をお願いします。
No.2ベストアンサー
- 回答日時:
>dummyと言うのはたんなるaliasでしょうか。
FROM句にサブクエリを実行するときにはalias名が必要なのはMySQLの仕様です
https://dev.mysql.com/doc/refman/5.6/ja/from-cla …
正直dummyでもhogeでもなんでもいいです。
なにか別名がついていればいいという仕様です
実質この場合のalias名は利用されていないし、競合することはありません
気になるならユニークなalias名を指定してください
例)
SELET内のサブクエリにaliasは不要、ただし付けないと参照しづらい
SELECT (SELECT 1);
WHERE句もリレーションしなければalias不要
SELECT 1 FROM (SELECT 1) AS DUMMY WHERE 1=(SELECT 1);
FROM句は常にaliasが必要
SELECT * FROM (SELECT 1); →×
SELECT * FROM (SELECT 1) AS DUMMY; →○
No.1
- 回答日時:
見た目上の順番は意味がないのでかならずid順で累計をだすために
order byを指定してupdateする必要があります。
今回のケースであれば変数を二つ使ってまわせばよいでしょう
//元データ
create table table1(id int not null primary key,合計 int not null,目標 int not null,実績 double not null);
insert into table1(id,合計,目標) values(1,2,3),(2,1,3),(3,1,3),(4,2,3),(5,1,3),(6,1,3),(7,2,3);
//実行SQL
set @a=0,@b=0;
update table1 set 実績=(@a:=@a+合計)/(@b:=@b+目標)*100 order by id asc;
//上記を一発でやる場合はダミーのサブクエリを実行する
update table1 set 実績=(select @a:=@a+合計 from (select @a:=0) as dummy)/(select @b:=@b+目標 from (select @b:=0) as dummy)*100 order by id asc;
一発でやると言うのは、分母も分子も双方に同じdummyを
使っていますが。これはぶつかりあってエラーになると言う事は
無いのでしょうか。
実際は、動かして見ると正常に動くのですが。
この場合のdummyと言うのは変数では無いと思いますが。
@aとか@bは変数ですが。dummyと変数の違いは何なんでしょうか
dummyと言うのはたんなるaliasでしょうか。
それは、フィールドの名前と言う事だとしたらfrom句に限っては
同じ名前でも支障は無いと言う事でしょうか。
dummyの使い方と言うのが良く分かりません。どう言う場合に同じ名前でも
問題にならないのかと言うあたりです。
宜しく回答お願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 達成率の計算式を教えていただきたいです。 KPIでの不良削減達成率の計算方法を教えて下さい。 昨年度 3 2022/04/10 15:11
- その他(教育・科学・学問) 目標率と達成率の計算方法を知りたいです。 例えば、 期間は10日間で目標は100万円の売上を上げる場 4 2022/08/22 13:37
- その他(教育・科学・学問) 進捗率の計算方法を教えてください。 90日の売上目標500万 20日経過時点で100万。 予定の進捗 1 2022/08/22 12:10
- Excel(エクセル) エクセル・スプレッドシートで、一定数を超えたらゼロから再累計する方法 8 2022/05/28 03:52
- MySQL 下記の問合せを行うクエリを、PhpMyAdminで作成して実行せよ。 第二回模試の3科目の各得点と合 1 2023/04/25 18:02
- 統計学 不偏分散について 3 2022/03/29 15:57
- その他(保険) 投資目的の保険商品について。受取時にかかる税金について保険会社に質問しました。 商品を端的に説明する 3 2023/08/08 20:33
- Excel(エクセル) エクセルで、未来の月の数値を表示させないようにしたい 1 2022/05/07 18:58
- 簿記検定・漢字検定・秘書検定 有形固定資産の期中売却の取引について 1 2023/03/02 12:31
- その他(Microsoft Office) Excel 勤務時間の計算について~(残業)有.無しの場合。 4 2022/07/17 21:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで最後の文字だけ置き...
-
[MySQL] 3つのテーブルの結合で...
-
エクセルの関数について教えて...
-
sqlで、600行あるテーブルを100...
-
SQLサーバから、項目の属性(型...
-
上位3位を求めるSQL文は?
-
副問合せの書き方について
-
SQL Left Join で重複を排除す...
-
SQLにて特定の文字を除いた検索...
-
[MySQL] UNIQUE制約の値を更新...
-
Access パラメータクエリをcsv...
-
selectした大量データをinsert...
-
親と子供が複数のSQL取得方法
-
テーブルが5つの時の結合の仕...
-
書籍の内容はまともでしょうか?
-
クエリ表示と、ADOで抽出したレ...
-
【SQL文】Insert into文で文法...
-
VIEWの元のテーブルのindexって...
-
inner joinをすると数がおかし...
-
Mysqlでunionを使った検索速度...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで最後の文字だけ置き...
-
SQL Left Join で重複を排除す...
-
SQLサーバから、項目の属性(型...
-
副問合せの書き方について
-
VIEWの元のテーブルのindexって...
-
エクセルの関数について教えて...
-
SQLにて特定の文字を除いた検索...
-
マイクラPC版のコマンドで効率...
-
select文のwhere句に配列を入れ...
-
sqlで、600行あるテーブルを100...
-
ある条件の最大値+1を初番する...
-
inner joinをすると数がおかし...
-
Unionした最後にGROUP BYを追加...
-
期間の重複を調べるSQL文につい...
-
クエリ表示と、ADOで抽出したレ...
-
Access パラメータクエリをcsv...
-
PL/SQLの変数について
-
MySQLのDATE型カラム値がNULLの...
-
php+mysqlで複数選択削除について
-
上位3位を求めるSQL文は?
おすすめ情報
sqlは出来れば、この場合はテーブルにidと合計と目標が保存されていますので
実績を出す更新クエリーのupdateでお願いします。
update table1 set 実績=....
宜しくお願いします。
updateを使ってテーブルに保存する理由は、
このデータを使って次の工程でグラフを作るからです。
その為にはどうしてもデータとしての保存が必要です。
宜しくお願いします。