MYSQL関数の使用例分析

WBOY
WBOY転載
2023-05-31 22:07:041096ブラウズ

MYSQL 関数

1: 集計関数

集計関数は主に次の要素で構成されます: count,sum,mi​​n,max,avg,group_count()

group_count( ) 関数では、まず group by で指定された列に従ってグループ化し、区切り文字で区切って、同じグループ内の値を接続し、文字列の結果を返します。 group_count([distinct ]フィールド名 [フィールドを昇順/降順で並べ替える] [区切り文字 '区切り文字'])

説明:

1: 重複する値を除外するには、distinct を使用します。

2 : 結果の値を並べ替える必要がある場合は、order by 句を使用できます。

3: 区切り文字は文字列値で、デフォルトはカンマです。


2: 数学関数

1:ABS(x) は x の絶対値を返します

2:CEIL(x) は x 以上の最小の整数を返します (切り上げ)
3:FLOOR(x) x 以下の最大の整数を返します(切り捨て)

4:GREATEST(expr1,expr2...) リスト内の最大値を返します
5:LEAST(expr1,expr2....)リストの最小値を返します
6 :MAX(x) フィールド x
7:MIN(x) の最大値を返します フィールド x
8:MOD(x,y) の最小値を返しますx を y で割った余り
9: PI() は pi (3.141593) を返します
10:POW(x,y) は x の y 乗を返します
11:RAND() は乱数を返します0 から 1 まで
12:ROUND(x) は x に最も近い整数を返します (四捨五入後)
13:ROUND(x,y) 指定された小数点以下の桁数を返します (四捨五入後)
14: TRUNCATE(x,y) 値 x を小数点以下 y 桁の値に返します (ROUND との最大の違いは、四捨五入されないことです)


2: 文字列関数

1: char_length(s) は文字列 s を返します。 文字数

2:character_length 文字列の文字数を返します s
3:concat(s1,s2,s3) 文字列 s1、s2 およびその他の文字列は次のとおりです。 1 つの文字列に結合

4:concat_ws( x,s1,s2..) concat(s1,s2,s3) 関数と同じですが、各文字列の間に x が追加され、x を区切り文字にすることができます
5:field (s,s1,s2) return 文字列リストの最初の文字列 s の位置 (s1, s2..)
6:length() はバイト数を返します。mysql の utf-8 のエンコーディングは 3 です。中国語文字のバイト
7:ltrim(s) は文字列 s の先頭のスペースを削除し、左側のスペースを削除します。rtrim() は右側のスペースを削除します。trim() は両方のスペースを削除します
8: 文字列からのmid(s,n,len) s の位置 n で長さ len の部分文字列をインターセプトすることは、substring(s,n,len)
9:position(s1, in,s) 文字列 s
10:replcae (s,s1,s2) から s1 の開始位置を取得します。 文字列 s
11:reverse(s) 文字列 s の順序を反転します。
12:right(s,n)戻り文字 文字列 s の最後の n 文字 (n 文字は右から取得)
13:strcmp(s1,s2) 文字列 s1 と s2 を比較します。等しい場合は 0 を返します。s1>s2 の場合は 1 を返します。s1 が s2 より小さい場合は -1
14:substr(s,start,length) は文字列 s の開始位置から長さ length の部分文字列をインターセプトします。
15:ucase(s) upper(s) 文字列を大文字に変換します
16:lcase(s) lower(s) 文字列を小文字に変換します


3:日付関数

1:unix_timestamp() は 1970-01-01 00:00:00 を現在のミリ秒値に返します

2:unix_timestamp(date_string) 指定された日付をミリ秒値のタイムスタンプに変換します
3:from_unixtime(bigint unixtime,string-format) ミリ秒値のタイムスタンプを変換します 指定された形式の場合、 date

4:curdate() は現在の日付を返します
5:current_date() は現在の日付を返します
6: current_timestamp() は現在の日付と時刻を返します。
7:datediff(d1,d2) 日付 d1>d2 の間の日数を計算します。例:datediff('2022-01-01','2022-02-01')
8:currtime() 現在時刻を返します
9:date_format(d, f) 式 f


4 の要件に従って日付 d を表示します: 制御フロー関数

1:if(expr,v1,v2) 式 expr が true の場合は結果 v1 を返し、それ以外の場合は結果 v2 を返します。

2:ifnull(v1,v2) v1 の値が null の場合は結果を返します。 v1、それ以外の場合は v2 を返します
3:isnull(expression) 式が null かどうかを判断します

4 :nullif(expr1,expr2) 2 つの文字列を比較します。文字列 expr1 と expr2 が等しい場合は null を返し、そうでない場合は expr1 を返します
5:case 式 when 条件 1 then result1 when 条件 2 then result2 else result end は case 関数の開始を表し、end は関数 End を表します。条件 1 が成立した場合は結果 1 を返し、条件 2 が成立した場合は結果 2 を返します。全てが成立していない場合は結果を返し、どれかが成立した場合は以下は実行されない


5: ウィンドウ関数

mysql8.0で新たに追加されたウィンドウ関数は、ウィンドウ関数とも呼ばれます。非集計ウィンドウ関数は、集計関数に関連しています。集計関数は、一連のデータを計算した後、単一の値 (つまり、グループ化) を返します。非集計関数は 1 行のデータのみを処理します。ウィンドウ集計関数が行レコードの特定のフィールドの結果を計算する場合、行数を変更せずにウィンドウ範囲内のデータを集計関数に入力できます

5.1 シリアル番号関数

はグループの並べ替えを実現し、シリアル番号を追加できます

1: row_number()

2: Rank()
3: Density_rank()



書き込み: select id,...,dense_rank() over(dname order by給与明細) as rn fromemployee;

注: パーティションを追加しないでくださいby グローバルソートを示します

MYSQL関数の使用例分析

5.2 分布関数

1: percent_rank()
目的: 各行は式 (rank-1)/ に基づいています。 (row- 1) 計算します。ランクは、rank() 関数によって生成されたシーケンス番号であり、行は、現在のウィンドウ内のレコードの行の総数です。
2: cume_dist()
目的: グループ内では、現在のランク以下である値の行数/グループ内の合計行数
アプリケーション シナリオ: 現在の給与以下の割合をクエリします。

記述方法: select dname,ename,salary,cume_dist() over(給与順) as rn1,
cume_dist() over(dname order by 給与) as rn2 from 従業員;

MYSQL関数の使用例分析

##5.3 関数の前後
1: lag(expr,n)

2: lead(expr,n )

目的: 現在の行の前後 n 行を返します (lag(exor,n)) n 行目の expr の値 (lead(expr,n))

アプリケーション シナリオ: 最初の生徒のスコアと現在の生徒のスコアの差をクエリします (現在の行にデータの前の行のフィールドが存在する可能性があります) 値)

MYSQL関数の使用例分析

##5.4 先頭関数と末尾関数MYSQL関数の使用例分析

##1: first_value(expr)
2: last_value(expr)
#目的: 最初の式 (first_value(expr)) または最後の式 (last_value(expr)) の値を返す

アプリケーション シナリオ: 現時点では日付順に並べ替える 最初と最後の従業員の給与をクエリする


5.5 その他の関数

MYSQL関数の使用例分析1: nth_value(expr,n)

2: ntile(n)
目的: ウィンドウ内の n 番目の expr の値を返します。expr は式または列名です。

アプリケーション シナリオ: 現在の給与の時点で、各従業員の 2 番目または 3 番目の給与を表示します


5.6 ウィンドウ集計関数MYSQL関数の使用例分析

1: sum()MYSQL関数の使用例分析2: avg()

3: min( )
4: max()


書き込み: select id,.. .,sum(salary) over(dname order by recruitate desc) as rn fromemployee;

rn の各行のデータは、現在の行と前の各行の給与の合計です。
If ソート ステートメントによる順序がない場合、グループ内のすべてのデータが合計されます。デフォルトでは

#

以上がMYSQL関数の使用例分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。