BLOG

【プログラマー 研修 Java】 あおの記録4



こんにちは、あおです\(^0^)/






今日は始発じゃなくて、少しお家でゆっくりしてから家を出たのですが…。


たとえ座れたとしても、やはり満員電車は慣れないものですね…。


乗り物酔いしやすいので、電車に長時間乗るのも嫌なのですが、更に人酔いもするという(泣)。














そして今日、皆さんに1番報告したいことはっ…。






先日行われた懇親会についてです!









とても楽しかったです~\(^0^)/ \(^0^)/ \(^0^)/ \(^0^)/ \(^0^)/ \(^0^)/ \(^0^)/


お会いしたことがない社内の方々にも会うこともでき、色々なお話を聞くことができました!


皆さん個性あふれる人たちで、もっといろいろなことを話したかったと思いました。2~3時間ほどだったので


あっという間に時間が過ぎてしまいました…。楽しい時間が過ぎるのはいつも早いです(・.・;)


次回も同様な会が開かれるようであれば、是非とも参加したいと思います!


企画していただいた上司に感謝です、ありがとうございます(>_<)







雑談はここまで!本日の研修内容を書いていきます。


◆本日の内容


 今日もSQLの課題を進めました。

 先日の復習と新しい項目「グループ化」を学習いたしました。両方の内容をブログに記載したいので、

今回のブログには先日の内容「関数」について記載いたします。
 

今日は主に以下の内容を学習いたしました

 ・関数を使った表記
 ・文字数の表記
 ・CASEを使った条件分岐からの表示
 ・文字の切り取りからの表示(STRINGS)
 ・グループ化
 ・副問い合わせ(少々)

◆所感



 条件分岐…。Javaのif文と同じで「〇〇だったら表示」、「それ以外は△△」などをSQLで書くことを覚えました。

書き方もJavaに似ているような感じはあるのですが…。うまく頭に定着しない…。混同します…。

ただ使い慣れればとても便利な機能であると思ってます。表示させたい項目や数値を条件分岐して一発で

表示できるので、探したいデータを見つけるのが楽になりそうです。



~テストの結果と平均点~

SELECT * FROM test.testresult;
INSERT INTO test.testresult
VALUES
("SS10",86,50,68,91,null),
("SS11",65,53,70,null,68),
("SS12",null,59,99,36,64);


/* SS10のnullを求めよ */
SELECT *
FROM
	testresult
WHERE
	id = "SS10";

UPDATE
	testresult
SET
	average = ((86+50+68+91)/4)
WHERE
	id = "SS10";


/* SS11のnullを求めよ */
SELECT *
FROM
	testresult
WHERE
	id = "SS11";

UPDATE
	testresult
SET
	discussion = (68*4)-(65+53+70)
WHERE
	id = "SS11";


/* SS12のnullを求めよ */
SELECT *
FROM
	testresult
WHERE
	id = "SS12";

UPDATE
	testresult
SET
	national_language = (64*4)-(59+99+36)
WHERE
	id = "SS12";


/* SQL分1つで3人の合計得点 */
SELECT id,(national_language + mathematics + chemistry + discussion)as "合計"
FROM
	testresult;


/* 260点以上合格、260点以下不合格 */
SELECT id,
CASE
WHEN
	(national_language + mathematics + chemistry + discussion) <=260 
THEN 
	"不合格"
ELSE 
	"合格"
END AS
	"合否" 
FROM
	testresult;


/* 260点に足りなかったものは残り何点必要だったのか */
SELECT id,
CASE 
WHEN
	(national_language + mathematics + chemistry + discussion) <=260 
THEN
	260-(national_language + mathematics + chemistry + discussion) 
ELSE
	"合格"
END AS
	"total"
FROM
	testresult
WHERE
	(national_language + mathematics + chemistry + discussion) <=260;


/* 受験者IDの切り取り(数字のみ表記) */
SELECT SUBSTRING(id,3,2)
FROM
	testresult;



 asとはカラムの名前に別名を付けるときに使います。



 例えば、54行目の”SQL分1つで3人の合計得点”では各idと合計点(科目の点数を足す計算)を選択しています。

ただ合計点を表示するカラムは今回のテーブルに存在しません。そんなとき「~as “合計” 」とするとカラムに

合計という名をつけて表示することができます。今回の場合、以下のような出力になります。



                 id   |   合計 
               ——————————————————
                SS10   |  295
                SS11   |  272
                SS12   |  256



 また、60行目の”260点以上合格、260点以下不合格 “ではCASE条件分岐を用いて表示しています。

WHENの後には「どういった条件?」を入力します。今回は「260点を超えない場合」を入れております。

THENの後には「どうします?」を入力します。今回は不合格を表示したいので「不合格」を入れております。

ELSEの後には「そうでなかった場合」を入力します。 今回は260点を超える場合 「合格」 と表示されます。

CASEENDの中に条件式を記載しています。ENDのあとのASでは、カラムに合否という名前を付けました。

今回の場合、以下のような出力になります。



                 id   |   合否 
               ——————————————————
                SS10   |  合格
                SS11   |  合格
                SS12   |  不合格



◆一言


 SQL、グループ化の次は「副問い合わせ」を学びます。今日一応内容については簡単に触れましたが、

まだまだ理解不足です…。SQLで一番難しい内容だと思いました。詳細については後日記載いたします。


 習ったことはアウトプットできるよう、復習して忘れないようにしたいと思います。


 あと少しでSQLも終わるので、終わり次第 Java Silver 取得に向けての学習を再開したいと思います!





では皆さん、次回のブログまでさようなら(*’ω’*)


BLOGトップへ戻る