Pythonの3日目の1行関数の学習

  1. 重複排除:個別のキーワード

要件:会社にはいくつの部門がありますか?

select department_id from employees;//このコードは107レコードを検出しますが、部門の重複の問題があります。

select distinct department_id from employees;

思考:次のコードに問題はありますか?

select employee_id,last_name,distinct department_id from employees;

回答:問題が発生し(エラーが報告されます)、エラーの理由は、コードの実行中にemployee_idとlast_nameの2つの列に107個のデータがあるためです。

department_idの重複排除後、データは12個しかないため、数が正しくありません。だからそれは間違っていた!概要:個別に使用する場合は注意が必要です...

  1. 1行の機能:

コンセプト:シングルデータイン、シングルアウト結果(シングルイン、シングルアウト)

分類学習:

1). キャラクター機能

2). ナンバー機能

3). 日付機能

4). 変換機能

5). 一般的な機能

キャラクター機能:
1). ケース変換機能:3

①.lower(m):文字列内のすべての文字をすべて小文字に変換します

②.upper(m):文字列内のすべての文字をすべて大文字に変換します

③.initcap(m):文字列の最初の文字を大文字に、残りの文字を小文字に変換します

コード:

select lower('ORACLE'),upper('oracle'),initcap('oRACLE')from dual;

要件:ベルという名前の人の情報を照会しますか?

select *from employees where lower(last_name)='bell';

select *from employees where upper(last_name)='BELL';

select *from employees where initcap(last_name)='Bell';

2). 文字制御機能:8

①.concat(m、n):文字列mと文字列nを連結して、より長い新しい文字列を取得します

コード:

select concat('Hello','World')from dual;

select concat(last_name,first_name)from employees;

②.length(m):特定のデータの長さを取得します

コード:

select length('python'),length(123456)from dual;

select length(employee_id),length(first_name),length(hire_date)from employees;

③.substr(x、y、z):xを位置yから長さzまでインターセプトして新しい文字列を取得し、プログラムに返します

パラメータの説明:

x:元の文字列データ

y:開始位置(添え字、索引)

z:傍受の長さ

コード:

select substr('HelloWorld',1,5)from dual;

④.instr(m,n):

パラメータの説明:文字列内の文字の位置を初めて決定します

m:文字列

n:1文字

コード:

select instr('HelloWorld','l')from dual;

⑤.replace(x、y、z):x内のすべての文字yを文字zに置き換えます

パラメータの説明:

x:文字列

y:文字列内の文字

z:置き換えられる文字

コード:

select replace('aaabcdaacdaabefaanba','a','6')from dual;

⑥.trim(x from y):y文字列の最初と最後の文字xを削除します

パラメータの説明:

x:文字

y:文字列

コード:

select trim('m'from'mmmmHellmmmomWmmorldmmmmm')from dual;

animeと⑧.lpadとrpadの機能(理解)

lpad(x,y,z):

rpad(x,y,z):

コード:

select lpad(salary,10,'*'),rpad(salary,10,'*')from employees;
  1. 番号関数:3

①.round(m、n):丸め

②.trunc(m、n):切り捨て

③.mod(m、n):残りを探す

コード:

select round(439.456,1),round(439.456,0),round(439.456,-1)from dual;

select trunc(439.456,1),trunc(439.456,0),trunc(439.456,-1)from dual;

select mod(1100,300)from dual;
  1. 日付関数:3

1). 日付

2). 時間

①.months_between(m、n):2つの日付の間の月数を計算するために使用されます(正確)

②.add_months(m、n):元のmか月に基づいてnか月を追加または削除します

③.last_day(m):特定の日付がある月の最終日を取得します

キーワード:sysdateは現在のシステム時間を表します

次のコードをテストします。

select sysdate from dual;

上記のコードは、データの日付部分のみを表示できますが、データベースの内部形式の制限により、時刻は表示できません。

変換関数to_char(x、y)を使用して日付と時刻を表示できます

補足:オラクルの特別な文字には次のものがあります

yyyy:年

mm:月

dd:日

日:週

hh:時間(1-12)

hh24:時間(0-23)

mi:分

ss:秒

上記のコードをリファクタリングして、日付と時刻のデータを表示します。

select to_char(sysdate,'yyyy-mm-dd hh:mi:ss')from dual;
次のコードを参照してください。
select sysdate +1,sysdate,sysdate -2from dual;select(sysdate - hire_date)from employees;

総括する:

日付データは数値で加算および減算でき、結果は前後の日数になります

日付と日付データのみを差し引くことができる場合、結果は2つの日付データ間の日数になります

場合:

1). 会社の従業員が入社してから何日経ちましたか? (切り捨てを使用して整数ビットを維持し、エイリアスworked_day)

select last_name,hire_date,trunc(sysdate - hire_date)"worked_day"from employees;

2). 会社の従業員が入社してから何ヶ月が経ちましたか? (大まかなバージョン:毎月30日と仮定)

select last_name,hire_date,(sysdate - hire_date)/30"month_work",months_between(sysdate,hire_date)"mon_work"from employees;

3). 毎月最後から2日目に入社する社員についてお問い合わせください。

select last_name,hire_date from employees

where last_day(hire_date)-1= hire_date;

select last_day(sysdate)from dual;

select add_months(sysdate,2),add_months(sysdate,-3)from dual;
  1. 変換機能:3

1). to_date

2). to_char

3). to_number

補足:

変換機能に関係するフォーマット文字:

9- - > 1ビットを表します

99- - > 2桁を表します

例えば:

select to_number('123456','999999')from dual;//初期バージョン、フォーマットを定義する必要があります(桁)

select to_number('123456')from dual;//新しいバージョン、フォーマットは省略できます

【予防】:

データ変換にto_number関数を使用する場合、変換する必要のあるデータの正しい長さを計算する必要があります。

フォーマットに必要な桁数を正確に定義するために、桁数が少なすぎると、エラーが直接報告されます。 !

要求する:

会社員の部署番号を問い合わせると、部署がない場合は「部署なし」と表示されます。

select last_name,department_id,nvl(to_char(department_id,'999'),'部門なし')from employees;

select last_name,department_id,nvl(to_char(department_id),'部門なし')from employees;
  1. 一般的な機能

1). nvl(expr1,expr2):

2). nvl2(expr1,expr2,expr3):

nvl2関数の実行フロー:

実行プロセスでは、expr1が最初に実行され、expr1の結果がnullでない場合、expr2が実行されます。

expr1の結果がnullの場合は、expr3を実行します。

要求する:

従業員番号、名前、給与、ボーナス率を照会します。

ボーナスレートが空でない場合、ボーナスレート+0.015の後の結果が表示されます。

ボーナスレートが空の場合、0.01が表示されます。

コード:

select employee_id,last_name,salary,commission_pct,

nvl2(commission_pct,commission_pct + 0.015,0.01) "new_comm"

from employees;

sqlの判断構造の紹介と説明:

2種類:

1). ケース式

テンプレート形式:

expr1 thenxの場合のケースフィールド

when expr2 then y

when expr3 then z

...

else n end;

要求する:

会社の従業員の番号、名前、給与、部門番号を照会し、

部門70の従業員の場合、給与の1.1倍が表示されます。

部門80の従業員の場合、給与の1.2倍が表示されます。

部門90の従業員の場合、給与の1.3倍が表示されます。

他の部門は通常の賃金を示しています。

コードは次のように表示されます。

select employee_id,last_name,salary,department_id,case department_id when 70 then salary *1.1

when 80 then salary *1.2else salary *1.3 end

- - when 90 then salary *1.3 end

- - else salary end

from employees

where department_id in(70,80,90);

2). デコード機能

テンプレート形式:

decode(field、expr1、val1、expr2、val2、...):

要求する:

会社の従業員の番号、名前、給与、部門番号を照会し、

部門70の従業員の場合、給与の1.1倍が表示されます。

部門80の従業員の場合、給与の1.2倍が表示されます。

部門90の従業員の場合、給与の1.3倍が表示されます。

他の部門は通常の賃金を示しています。

コードは次のように表示されます。

select employee_id,last_name,salary,department_id,decode(department_id,70,salary *1.1,80,salary *1.2,--90,salary *1.3,

salary *1.3)from employees

where department_id in(70,80,90);

Recommended Posts

Pythonの3日目の1行関数の学習
Python関数の基礎学習
Pythonマジック関数eval()学習
パイソンリスト学習
Python enumerate()関数
Python関数バッファー
Pythonエントリー学習教材
Pythonカスタム関数の基本
Pythonの結合関数
Four.mdを学習するPython3エントリ
Python組み込み関数-compile()
Pythonデータ分析-関数の適用
python_クローラーの基本的な学習
Python3組み込み関数table.md
python学習初日の概要
python_正規式学習
three.mdを学習するPython3エントリ
Python3.mdの使用を開始する
Pythonプリントプリントタイマー機能
two.mdを学習するPython3エントリ
Pythonは関数メソッドを定義します
Pythonの上位関数の使用法の概要!
Pythonはオンライン翻訳機能を実現します
Python正規表現クイックラーニング
PythonプログラミングPycharm高速学習
はじめにpython学習手順
Pythonトルネードアップロードファイル機能
PythonがFTP機能を実装する方法
Pythonは画像スティッチング機能を実装しています
Pythonの上位関数の使用法の概要!