talosのプログラミング教室

【PrimeFaces】Enterキーを押したときに反応するボタンを指定する

こんにちは。たろすです。

今回はPrimeFacesを使って、Enterキーを押したときに反応するボタンを指定する方法を紹介します。

Enterキーを押したときに反応するボタンを指定

<p:defaultCommand target="next" />
<p:commandButton value="次へ" id="next"/>

commandButtonにid属性を設定し、defaultCommandのfor属性でcommandButtonのidを指定します。

おわりに

Enterキーを押したときに反応するボタンを指定する方法でした。

【PrimeFaces】プレースホルダーを設定する

こんにちは。たろすです。

今回はPrimeFacesでプレースホルダーを設定する方法を紹介します。

普通のプレースホルダ

<p:inputText id="last-name" />
<p:watermark for="last-name" value="姓" />

<p:inputText id="first-name" />
<p:watermark for="first-name" value="名" />

inputTextにid属性を設定し、watermarkのfor属性でinputTextのidを指定します。

watermarkのvalue属性にはプレースホルダーとして表示したい文字列を設定します。 

出来上がりはこんな感じです。
(別途CSSを設定しています)

f:id:talosta:20210814113208p:plain

カーソルを合わせるとテキストボックスの外に表示されるプレースホルダ

<span class="ui-float-label">
	<p:inputText id="last-name" />
	<p:outputLabel for="last-name" value="姓" />
</span>
<span class="ui-float-label">
	<p:inputText id="first-name" />
	<p:outputLabel for="first-name" value="名" />
</span>

<span class="ui-float-label">でinputTextとoutputLableを囲みます。

inputTextにはid属性を設定し、outputLableのfor属性にinputTextのidを指定します。

outputLabelのvalue属性にはプレースホルダーとして表示したい文字列を設定します。

出来上がりはこんな感じです。

f:id:talosta:20210814175507p:plain

↓カーソルを合わせると

f:id:talosta:20210814175536p:plain

おわりに

PrimeFacesでプレースホルダーを設定する方法でした。

【基本・応用情報技術者】SQL ~集約関数②~

こんにちは。たろすです。

今回はSQLの集約関数を柔軟に使う方法について説明します。

GROUP BY句

GROUP BY句は行をグループ化して、グループごとに集計を行うようにすることができるものです。

以下のようなテーブルがあるとします。

f:id:talosta:20210703123926p:plain

それに対し、商品コードごとに数量の合計を求めたいときは以下のようにします。

SELECT 商品コード, SUM(数量) FROM 受注明細 GROUP BY 商品コード;

このようにすることで以下の結果を得られます。

f:id:talosta:20210703115559p:plain

COALESCE関数

集約関数の引数に指定したカラムがNULLの場合、その行は集計対象となりません。

そうなると集計対象となる行が存在しないグループの集計結果もNULLとなります。

f:id:talosta:20210703121718p:plain

SELECT 商品コード, SUM(数量) FROM 受注明細 GROUP BY 商品コード;

f:id:talosta:20210703121741p:plain

このようなときにNULLを表示したくない場合はCOALESCE関数を使用します。

COALESCE関数は引数を二つとります。

一つ目の引数がNULLの場合は二つ目の引数を返し、それ以外は一つ目の引数を返します。

先程のSQLを以下のように変えると、

SELECT 商品コード, COALESCE(SUM(数量), 0) FROM 受注明細 GROUP BY 商品コード;

結果は以下のようになります。

f:id:talosta:20210703123042p:plain

HAVING句

条件で出力を絞るときはWHERE句を使ってきましたが、集約関数の結果を条件として絞りたい場合はHAVING句を使用します。

例えば商品コードごとの合計値が200以上のもののみ出力したい場合、以下のようにします。

SELECT 商品コード, SUM(数量) FROM 受注明細 GROUP BY 商品コード HAVING SUM(数量) > 200;

f:id:talosta:20210703123411p:plain

HAVINGのところをWHEREにするとエラーになってしまうので気をつけてください。

おわりに

今回はSQLのGROUP BY句、COALESCE関数、HAVING句について説明しました。

非常によく問われるので覚えておきましょう。

【基本・応用情報技術者】SQL ~集約関数①~

こんにちは。たろすです。

今回はSQLの集約関数について説明します。

COUNT

COUNTはレコード数を数える関数です。

SELECT COUNT(カラム名) FROM テーブル名;

カラム名のところは「*」にすることもできます。

例えば以下のようなテーブルがあったとき、

f:id:talosta:20210703123926p:plain

次のようなSQLを投げます。

SELECT COUNT(*) FROM 受注明細;

すると結果は以下のようになります。

f:id:talosta:20210703110951p:plain

SUM

SUMはカラムの値の合計値を算出する関数です。

使い方は以下の通りです。

SELECT SUM(カラム名) FROM テーブル名;

先程のテーブルに対して以下のSQLを投げます。

SELECT COUNT(数量) FROM 受注明細;

すると以下の結果が返ってきます。

f:id:talosta:20210703111945p:plain

AVG

AVGはカラムの平均を求める関数です。

以下のように使います。

SELECT AVG(カラム名) FROM テーブル名;

先程のテーブルに以下のSQLを投げます。

SELECT AVG(数量) FROM 受注明細;

すると結果はこうなります。

f:id:talosta:20210703112000p:plain

MAX

MAXはカラムの最大値を求める関数です。

以下のように使います。

SELECT MAX(カラム名) FROM テーブル名;

先程のテーブルに以下のSQLを投げます。

SELECT MAX(数量) FROM 受注明細;

すると結果は以下のようになります。

f:id:talosta:20210703112119p:plain

MIN

MINはカラムの最小値を求める関数です。

使い方は以下の通りです。

SELECT MIN(カラム名) FROM テーブル名;

先程のテーブルに以下のSQLを投げます。

SELECT MIN(数量) FROM 受注明細;

すると結果は以下のようになります。

f:id:talosta:20210703112306p:plain


おわりに

今回はSQLの集約関数について説明しました。

必ずと言ってよいほどよく出るので復習しておきましょう。

【基本・応用情報技術者】SQL ~結合~

こんにちは。たろすです。

今回はSQLの結合について説明します。

結合とは

複数のテーブルをくっつけて一つのテーブルとして扱う方法を結合といいます。

結合には主に二種類あります。

一つは内部結合です。

内部結合は結合条件に合致するデータがある場合のみ出力します。

もう一つは外部結合です。

外部結合は結合条件に合致するデータがなくても出力することができます。

内部結合

内部結合には書き方が二種類あります。

SELECT カラム名1, カラム名2,... FROM テーブル名1 [INNER] JOIN テーブル名2,... ON 結合条件;
SELECT カラム名1, カラム名2,... FROM テーブル名1, テーブル名2,... WHERE 結合条件;


例えば以下のような二つのテーブルがあるとします。

f:id:talosta:20210626125225p:plain

これに対し次のようなSQLを投げると、

SELECT * FROM 受注 JOIN 顧客 ON 受注.顧客番号 = 顧客.顧客番号;

以下のようにデータが取れます。

f:id:talosta:20210626125447p:plain

結合する列名が同じ場合はUSINGを使うこともできます。

SELECT * FROM 受注 JOIN 顧客 ON USING(顧客番号);

逆に結合する列名が異なる場合は「受注.」や「顧客.」といったテーブル名の指定を省略することもできます。

上記のSQLは次のように書くこともできます。

SELECT * FROM 受注, 顧客 WHERE 受注.顧客番号 = 顧客.顧客番号;

外部結合

外部結合には三種類あります。

左外部結合

左外部結合は次のように使います。

SELECT カラム名1, カラム名2,... FROM テーブル名1 LEFT [OUTER] JOIN テーブル名2 ON 結合条件;

先程のテーブルに以下のSQLを投げます。

SELECT *  FROM 受注明細 LEFT JOIN 商品 ON 受注明細.商品コード = 商品.商品コード;

すると以下のように出力されます。

f:id:talosta:20210626125554p:plain

内部結合と違い、条件に合致するデータが存在しない場合すべてのカラムをNULLとして結合します。

右外部結合

左外部結合の反対です。

SELECT カラム名1, カラム名2,... FROM テーブル名1 RIGHT [OUTER] JOIN テーブル名2 ON 結合条件;

先程のテーブルに以下のSQLを投げると

SELECT *  FROM 受注明細 RIGHT JOIN 商品 ON 受注明細.商品コード = 商品.商品コード;

以下のような出力を得ます。

f:id:talosta:20210626125747p:plain

完全外部結合

左外部結合と右外部結合を合わせたものです。

完全外部結合はこのように使います。

SELECT カラム名1, カラム名2,... FROM テーブル名1 FULL [OUTER] JOIN テーブル名2 ON 結合条件;

先程のテーブルに以下のSQLを投げると、

SELECT *  FROM 受注明細 FULL JOIN 商品 ON 受注明細.商品コード = 商品.商品コード;

f:id:talosta:20210626125907p:plain

となります。

おわりに

今回はSQLの結合について説明しました。

午後問で絶対にでるので確実にできるようにしておきましょう。

現役エンジニアがUdemyをおすすめする8の理由

こんにちは。たろすです。

実は先日Udemyというサービスを使い始めました。



Udemyは動画でスキルを身につけることができるサービスです。

主にIT系の動画が多く上がっています。

いくつか見てみたのですが、とてもおすすめしたいので、なぜUdemyをおすすめするか説明していきます。

1.安い

f:id:talosta:20210821170602p:plain

まずはこれです。

エンジニアスクールだと何万円ととられる講座が最安1000円台から受けられます。

そして無料のコースもそこそこあるので、試しに見てみて良かったらその人が上げている他の講座を購入するなんてこともできます。

2.たくさんのコースから選べる

Udemyには15.5万点以上の講座があります。

その中から好きなものを選べるので「受けたい講座がない!」なんてことはないのではないでしょうか。

f:id:talosta:20210821170851p:plain

Pythonだけでも2000件以上ありました。

3.30日間返金保証がついている

購入してから30日間までであれば返金してもらうことができます。

なので買ってみて「全然思っていたのと違った…」ということがあれば返金してもらえるので安心です。

エンジニアスクールも返金保証がたまについていたりしますが、難しい条件をクリアしないと返金してもらえないなどよく聞くのでこちらの方が安心ですね。

4.評判をもとに講師、講座を選べる

f:id:talosta:20210821171501p:plain

エンジニアスクールの評判はアフィリエイターが書いているので悪いことがあまり書かれていませんが、Udemyは実際に受講した人の評判なので信憑性があります。

しかもエンジニアスクールは講師に当たりはずれがあり、受講者は選べないのでその点もナイスです。

5.場所と時間に縛られずに受講できる

Udemyスマホでも受講できるので、電車の中のすきま時間などで勉強できます。

オフラインでも受講できるので電波が悪いところでもOKです。

6.講師に質問できる

エンジニアスクールと同様講師に質問することができます。

また、他の人の質問も見ることができます。

7.クーポンの配布やセールがある

講師がクーポンを配っていたり、セールがやっていたりすると数万円の講座が数千円で受けられたりします。

まあまあな頻度でやっているみたいです。

8.何度でも受講できる

一度買った講座は何度でも受講できます。

おわりに

2021年8月21日現在、新規受講生向けキャンペーンがやっていて最大92%OFFです(私の観測範囲では)。

このキャンペーンがずっとやっているものなのかはわかりませんが、興味があるかたはお早めに。

f:id:talosta:20210821170451p:plain



【基本・応用情報技術者】SQL ~SELECT文②~

こんにちは。たろすです。

今回はSQLのSELECT文(ORDER BY句、DISTINCT)について説明します。

ORDER BY句

ORDER BY句はあるカラムに関して整列させることができます。

ORDER BY句は以下のように使います。

SELECT カラム名1, カラム名2,... FROM テーブル名 ORDER BY カラム名X [ASC/DESC], カラム名Y [ASC/DESC]...;

ASCが昇順でDESCが降順です。

デフォルトが昇順なのでASCは省略することができます。

先に書いたカラムのほうが整列の優先順位が高くなります。


例えば以下のようなテーブルがあるとします。

f:id:talosta:20210619103730p:plain

これに対し次のようなSQLを投げると、

SELECT * FROM 社員 ORDER BY 社員番号 DESC;

以下のようにデータが取れます。

f:id:talosta:20210626113625p:plain

DISTINCT

DISTINCTを指定すると、すべてのカラムの値が同じ場合には1行にまとめられます。

DISTINCTはSELECTの後につけます。

SELECT DISTINCT カラム名1, カラム名2,... FROM テーブル名;

先程のテーブルに以下のSQLを投げます。

SELECT DISTINCT 役職 FROM 社員;

すると以下のように出力されます。

f:id:talosta:20210626114656p:plain


おわりに

今回はSQLのORDER BY句とDISTINCTについて説明しました。

午後問でデータベースを取る方は必須の知識なのでしっかり覚えておきましょう。