ホームページ >データベース >mysql チュートリアル >MYSQL関数の使用例分析
集計関数は主に次の要素で構成されます: count,sum,min,max,avg,group_count()
group_count( ) 関数では、まず group by で指定された列に従ってグループ化し、区切り文字で区切って、同じグループ内の値を接続し、文字列の結果を返します。 group_count([distinct ]フィールド名 [フィールドを昇順/降順で並べ替える] [区切り文字 '区切り文字'])
1: 重複する値を除外するには、distinct を使用します。説明:
2 : 結果の値を並べ替える必要がある場合は、order by 句を使用できます。
3: 区切り文字は文字列値で、デフォルトはカンマです。
2: 数学関数
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: 文字列関数
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:日付関数
3:from_unixtime(bigint unixtime,string-format) ミリ秒値のタイムスタンプを変換します 指定された形式の場合、 date4: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 を表示します: 制御フロー関数
3:isnull(expression) 式が null かどうかを判断しますmysql8.0で新たに追加されたウィンドウ関数は、ウィンドウ関数とも呼ばれます。非集計ウィンドウ関数は、集計関数に関連しています。集計関数は、一連のデータを計算した後、単一の値 (つまり、グループ化) を返します。非集計関数は 1 行のデータのみを処理します。ウィンドウ集計関数が行レコードの特定のフィールドの結果を計算する場合、行数を変更せずにウィンドウ範囲内のデータを集計関数に入力できます5.1 シリアル番号関数 はグループの並べ替えを実現し、シリアル番号を追加できます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: ウィンドウ関数
1: row_number()
2: Rank()3: Density_rank()書き込み: select id,...,dense_rank() over(dname order by給与明細) as rn fromemployee;
注: パーティションを追加しないでくださいby グローバルソートを示します
5.2 分布関数
1:
percent_rank()
目的: 各行は式 (rank-1)/ に基づいています。 (row- 1) 計算します。ランクは、rank() 関数によって生成されたシーケンス番号であり、行は、現在のウィンドウ内のレコードの行の総数です。
2:cume_dist()
目的: グループ内では、現在のランク以下である値の行数/グループ内の合計行数
アプリケーション シナリオ: 現在の給与以下の割合をクエリします。##5.3 関数の前後記述方法: select dname,ename,salary,cume_dist() over(給与順) as rn1,
cume_dist() over(dname order by 給与) as rn2 from 従業員;1: lag(expr,n)目的: 現在の行の前後 n 行を返します (lag(exor,n)) n 行目の expr の値 (lead(expr,n))アプリケーション シナリオ: 最初の生徒のスコアと現在の生徒のスコアの差をクエリします (現在の行にデータの前の行のフィールドが存在する可能性があります) 値)2: lead(expr,n )
##5.4 先頭関数と末尾関数
##1: first_value(expr)2: last_value(expr)
#目的: 最初の式 (first_value(expr)) または最後の式 (last_value(expr)) の値を返すアプリケーション シナリオ: 現時点では日付順に並べ替える 最初と最後の従業員の給与をクエリする
5.5 その他の関数1: nth_value(expr,n)
2: ntile(n)目的: ウィンドウ内の n 番目の expr の値を返します。expr は式または列名です。アプリケーション シナリオ: 現在の給与の時点で、各従業員の 2 番目または 3 番目の給与を表示します
5.6 ウィンドウ集計関数
1: sum()2: avg()
3: min( )4: max()
If ソート ステートメントによる順序がない場合、グループ内のすべてのデータが合計されます。デフォルトではrn の各行のデータは、現在の行と前の各行の給与の合計です。
書き込み: select id,.. .,sum(salary) over(dname order by recruitate desc) as rn fromemployee;#
以上がMYSQL関数の使用例分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。