主頁 > 知識庫 > OraclePL/SQL單行函數(shù)和組函數(shù)詳解

OraclePL/SQL單行函數(shù)和組函數(shù)詳解

熱門標(biāo)簽:地圖標(biāo)注原件 廣州市400電話辦理 宜賓外呼系統(tǒng)廠家 語音電話機(jī)器人缺點(diǎn) 南通防封外呼系統(tǒng)運(yùn)營商 百變地圖標(biāo)注 語音電話機(jī)器人營銷方案 淮安自動(dòng)外呼系統(tǒng)開發(fā) 修改高德地圖標(biāo)注
正在看的ORACLE教程是:OraclePL/SQL單行函數(shù)和組函數(shù)詳解。 1  函數(shù)是一種有零個(gè)或多個(gè)參數(shù)并且有一個(gè)返回值的程序。在SQL中Oracle內(nèi)建了一系列函數(shù),這些函數(shù)都可被稱為SQL或PL/SQL語句,函數(shù)主要分為兩大類:
  2
  3   單行函數(shù)
  4
  5   組函數(shù)
  6
  7  本文將討論如何利用單行函數(shù)以及使用規(guī)則。
  8
  9  SQL中的單行函數(shù)
 10
 11  SQL和PL/SQL中自帶很多類型的函數(shù),有字符、數(shù)字、日期、轉(zhuǎn)換、和混合型等多種函數(shù)用于處理單行數(shù)據(jù),因此這些都可被統(tǒng)稱為單行函數(shù)。這些函數(shù)均可用于SELECT,WHERE、ORDER BY等子句中,例如下面的例子中就包含了TO_CHAR,UPPER,SOUNDEX等單行函數(shù)。
 12
 13SELECT ename,TO_CHAR(hiredate,'day,DD-Mon-YYYY')
 14FROM emp
 15Where UPPER(ename) Like 'AL%'
 16ORDER BY SOUNDEX(ename)
 17
 18  單行函數(shù)也可以在其他語句中使用,如update的SET子句,INSERT的VALUES子句,DELET的WHERE子句,認(rèn)證考試特別注意在SELECT語句中使用這些函數(shù),所以我們的注意力也集中在SELECT語句中。
 19
 20  NULL和單行函數(shù)
 21
 22  在如何理解NULL上開始是很困難的,就算是一個(gè)很有經(jīng)驗(yàn)的人依然對此感到困惑。NULL值表示一個(gè)未知數(shù)據(jù)或者一個(gè)空值,算術(shù)操作符的任何一個(gè)操作數(shù)為NULL值,結(jié)果均為提個(gè)NULL值,這個(gè)規(guī)則也適合很多函數(shù),只有CONCAT,DECODE,DUMP,NVL,REPLACE在調(diào)用了NULL參數(shù)時(shí)能夠返回非NULL值。在這些中NVL函數(shù)時(shí)最重要的,因?yàn)樗苤苯犹幚鞱ULL值,NVL有兩個(gè)參數(shù):NVL(x1,x2),x1和x2都式表達(dá)式,當(dāng)x1為null時(shí)返回X2,否則返回x1。
 23
 24  下面我們看看emp數(shù)據(jù)表它包含了薪水、獎(jiǎng)金兩項(xiàng),需要計(jì)算總的補(bǔ)償
 25
 26column name emp_id salary bonus
 27
 28key type pk
 29nulls/unique nn,u nn
 30fk table
 31datatype number number number
 32length 11.2 11.2
 33
 34  不是簡單的將薪水和獎(jiǎng)金加起來就可以了,如果某一行是null值那么結(jié)果就將是null,比如下面的例子:
 35
 36update emp
 37set salary=(salary+bonus)*1.1
 38
 39  這個(gè)語句中,雇員的工資和獎(jiǎng)金都將更新為一個(gè)新的值,但是如果沒有獎(jiǎng)金,即 salary + null,那么就會得出錯(cuò)誤的結(jié)論,這個(gè)時(shí)候就要使用nvl函數(shù)來排除null值的影響。
 40所以正確的語句是:
 41
 42update emp
 43set salary=(salary+nvl(bonus,0)*1.1
 44
 45  單行字符串函數(shù)
 46
 47  單行字符串函數(shù)用于操作字符串?dāng)?shù)據(jù),他們大多數(shù)有一個(gè)或多個(gè)參數(shù),其中絕大多數(shù)返回字符串
 48
 49  ASCII()
 50  c1是一字符串,返回c1第一個(gè)字母的ASCII碼,他的逆函數(shù)是CHR()
 51
 52SELECT ASCII('A') BIG_A,ASCII('z') BIG_z FROM emp
 53
 54BIG_A BIG_z
 5565 122
 56
 57  CHR(<i>)[NCHAR_CS]
 58  i是一個(gè)數(shù)字,函數(shù)返回十進(jìn)制表示的字符
 59
 60select CHR(65),CHR(122),CHR(223) FROM emp
 61
 62CHR65 CHR122 CHR223
 63A z B
 64
 65  CONCAT(,)
 66  c1,c2均為字符串,函數(shù)將c2連接到c1的后面,如果c1為null,將返回c2.如果c2為null,則返回c1,如果c1、c2都為null,則返回null。他和操作符||返回的結(jié)果相同
 67
 68select concat('slobo ','Svoboda') username from dual
 69
 70username
 71
 72slobo Syoboda
 73
 74
 75  INITCAP()
 76  c1為一字符串。函數(shù)將每個(gè)單詞的第一個(gè)字母大寫其它字母小寫返回。單詞由空格,控制字符,標(biāo)點(diǎn)符號限制。
 77
 78select INITCAP('veni,vedi,vici') Ceasar from dual
 79
 80Ceasar
 81
 82Veni,Vedi,Vici
 83
 84
 85  INSTR(,[,<i>[,]])
 86  c1,c2均為字符串,i,j為整數(shù)。函數(shù)返回c2在c1中第j次出現(xiàn)的位置,搜索從c1的第i個(gè)字符開始。當(dāng)沒有發(fā)現(xiàn)需要的字符時(shí)返回0,如果i為負(fù)數(shù),那么搜索將從右到左進(jìn)行,但是位置的計(jì)算還是從左到右,i和j的缺省值為1.
 87
 88select INSTR('Mississippi','i',3,3) from dual
 89
 90INSTR('MISSISSIPPI','I',3,3)
 91
 9211
 93
 94select INSTR('Mississippi','i',-2,3) from dual
 95
 96INSTR('MISSISSIPPI','I',3,3)
 97
 982
 99
100
101  INSTRB(,[,i[,j])
102  與INSTR()函數(shù)一樣,只是他返回的是字節(jié),對于單字節(jié)INSTRB()等于INSTR()
103
104  LENGTH()
105  c1為字符串,返回c1的長度,如果c1為null,那么將返回null值。
106
107select LENGTH('Ipso Facto') ergo from dual
108
109ergo
110
11110
112
113  LENGTHb()
114  與LENGTH()一樣,返回字節(jié)。
115
116  lower()
117  返回c的小寫字符,經(jīng)常出現(xiàn)在where子串中
118
119select LOWER(colorname) from itemdetail WHERE LOWER(colorname) LIKE '%white%'
120
121COLORNAME
122
123Winterwhite
124
125
126  LPAD(,<i>[,])
127  c1,c2均為字符串,i為整數(shù)。在c1的左側(cè)用c2字符串補(bǔ)足致長度i,可多次重復(fù),如果i小于c1的長度,那么只返回i那么長的c1字符,其他的將被截去。c2的缺省值為單空格,參見RPAD。
128
129select LPAD(answer,7,'') padded,answer unpadded from question;
130
131PADDED UNPADDED
132
133Yes Yes
134NO NO
135Maybe maybe
136
137
138  LTRIM(,)
13

[1] [2] [3] [4] 下一頁

正在看的ORACLE教程是:OraclePL/SQL單行函數(shù)和組函數(shù)詳解。9  把c1中最左邊的字符去掉,使其第一個(gè)字符不在c2中,如果沒有c2,那么c1就不會改變。
140
141select LTRIM('Mississippi','Mis') from dual
142
143LTR
144
145ppi
146
147  RPAD(,<i>[,])
148  在c1的右側(cè)用c2字符串補(bǔ)足致長度i,可多次重復(fù),如果i小于c1的長度,那么只返回i那么長的c1字符,其他的將被截去。c2的缺省值為單空格,其他與LPAD相似
149
150  RTRIM(,)
151  把c1中最右邊的字符去掉,使其第后一個(gè)字符不在c2中,如果沒有c2,那么c1就不會改變。
152
153  REPLACE(,[,])
154  c1,c2,c3都是字符串,函數(shù)用c3代替出現(xiàn)在c1中的c2后返回。
155
156select REPLACE('uptown','up','down') from dual
157
158REPLACE
159
160downtown
161
162  STBSTR(,<i>[,])
163  c1為一字符串,i,j為整數(shù),從c1的第i位開始返回長度為j的子字符串,如果j為空,則直到串的尾部。
164
165select SUBSTR('Message',1,4) from dual
166
167SUBS
168
169Mess
170
171
172  SUBSTRB(,<i>[,])
173  與SUBSTR大致相同,只是I,J是以字節(jié)計(jì)算。
174
175  SOUNDEX()
176  返回與c1發(fā)音相似的詞
177
178select SOUNDEX('dawes') Dawes SOUNDEX('daws') Daws, SOUNDEX('dawson') from dual
179
180Dawes Daws Dawson
181
182D200 D200 D250
183
184  TRANSLATE(,,)
185  將c1中與c2相同的字符以c3代替
186
187select TRANSLATE('fumble','uf','ar') test from dual
188
189TEXT
190
191ramble 
192
193  TRIM([[]] from c3)
194  將c3串中的第一個(gè),最后一個(gè),或者都刪除。
195
196select TRIM(' space padded ') trim from dual
197
198TRIM
199
200space padded
201
202  UPPER()
203  返回c1的大寫,常出現(xiàn)where子串中
204
205select name from dual where UPPER(name) LIKE 'KI%'
206
207NAME
208
209KING
210
211  單行數(shù)字函數(shù)
212
213  單行數(shù)字函數(shù)操作數(shù)字?jǐn)?shù)據(jù),執(zhí)行數(shù)學(xué)和算術(shù)運(yùn)算。所有函數(shù)都有數(shù)字參數(shù)并返回?cái)?shù)字值。所有三角函數(shù)的操作數(shù)和值都是弧度而不是角度,oracle沒有提供內(nèi)建的弧度和角度的轉(zhuǎn)換函數(shù)。
214
215  ABS()
216  返回n的絕對值
217
218  ACOS()
219  反余玄函數(shù),返回-1到1之間的數(shù)。n表示弧度
220
221select ACOS(-1) pi,ACOS(1) ZERO FROM dual
222
223PI ZERO
224
2253.14159265 0 
226
227  ASIN()
228  反正玄函數(shù),返回-1到1,n表示弧度
229
230  ATAN()
231  反正切函數(shù),返回n的反正切值,n表示弧度。
232
233  CEIL()
234  返回大于或等于n的最小整數(shù)。
235
236  COS()
237  返回n的余玄值,n為弧度
238
239  COSH()
240  返回n的雙曲余玄值,n 為數(shù)字。
241
242select COSH(1.4>) FROM dual
243
244COSH(1.4)
245
2462.15089847
247
248  EXP()
249  返回e的n次冪,e=2.71828183.
250
251  FLOOR()
252  返回小于等于N的最大整數(shù)。
253
254  LN()
255  返回N的自然對數(shù),N必須大于0
256
257  LOG(,)
258  返回以n1為底n2的對數(shù)
259
260  MOD()
261  返回n1除以n2的余數(shù),
262
263  POWER(,)
264  返回n1的n2次方
265
266  ROUND(,)
267  返回舍入小數(shù)點(diǎn)右邊n2位的n1的值,n2的缺省值為0,這回將小數(shù)點(diǎn)最接近的整數(shù),如果n2為負(fù)數(shù)就舍入到小數(shù)點(diǎn)左邊相應(yīng)的位上,n2必須是整數(shù)。

[NextPage]


268
269select ROUND(12345,-2),ROUND(12345.54321,2) FROM dual
270
271ROUND(12345,-2) ROUND(12345.54321,2)
272
27312300 12345.54
274
275  SIGN()
276  如果n為負(fù)數(shù),返回-1,如果n為正數(shù),返回1,如果n=0返回0.
277
278  SIN()
279  返回n的正玄值,n為弧度。
280
281  SINH()
282  返回n的雙曲正玄值,n為弧度。
283
284  SQRT()
285  返回n的平方根,n為弧度
286
287  TAN()
288  返回n的正切值,n為弧度
289
290  TANH()
291  返回n的雙曲正切值,n為弧度
292
293  TRUNC(,)
294  返回截尾到n2位小數(shù)的n1的值,n2缺省設(shè)置為0,當(dāng)n2為缺省設(shè)置時(shí)會將n1截尾為整數(shù),如果n2為負(fù)值,就截尾在小數(shù)點(diǎn)左邊相應(yīng)的位上。
295
296  單行日期函數(shù)
297
298  單行日期函數(shù)操作DATA數(shù)據(jù)類型,絕大多數(shù)都有DATA數(shù)據(jù)類型的參數(shù),絕大多數(shù)返回的也是DATA數(shù)據(jù)類型的值。
299
300  ADD_MONTHS(,<i>)
301  返回日期d加上i個(gè)月后的結(jié)果。i可以使任意整數(shù)。如果i是一個(gè)小數(shù),那么數(shù)據(jù)庫將隱式的他轉(zhuǎn)換成整數(shù),將會截去小數(shù)點(diǎn)后面的部分。
302
303  LAST_DAY()
304  函數(shù)返回包含日期d的月份的最后一天
305
306  MONTHS_BETWEEN(,)
307  返回d1和d2之間月的數(shù)目,如果d1和d2的日的日期都相同,或者都使該月的最后一天,那么將返回一個(gè)整數(shù),否則會返回的結(jié)果將包含一個(gè)分?jǐn)?shù)。
308
309  NEW_TIME(,,)
310  d1是一個(gè)日期數(shù)據(jù)類型,當(dāng)時(shí)區(qū)tz1中的日期和時(shí)間是d時(shí),返回時(shí)區(qū)tz2中的日期和時(shí)間。tz1和tz2時(shí)字符串。
311
312  NEXT_DAY(,)
313  返回日期d后由dow給出的條件的第一天,dow使用當(dāng)前會話中給出的語言指定了一周中的某一天,返回的時(shí)間分量與d的時(shí)間分量相同。
314
315select NEXT_DAY('01-Jan-2000','Monday') "1st Monday",NEXT_DAY('01-Nov-2004','Tuesday')+7 "2nd Tuesday") from dual;
316
3171st Monday 2nd Tuesday
318
31903-Jan-2000 09-Nov-2004 
320
321  ROUND([,])
322  將日期d按照fmt指定的格式舍入,fmt為字符串。
323
324  SYADATE
325  函數(shù)沒有參數(shù),返回當(dāng)前日期和時(shí)間。
326
327  TRUNC([,])
328  返回由fmt指定的單位的日期d.
329
330  單行轉(zhuǎn)換函數(shù)
331
332

上一頁  [1] [2] [3] [4] 下一頁

正在看的ORACLE教程是:OraclePL/SQL單行函數(shù)和組函數(shù)詳解?! 涡修D(zhuǎn)換函數(shù)用于操作多數(shù)據(jù)類型,在數(shù)據(jù)類型之間進(jìn)行轉(zhuǎn)換。
333
334  CHARTORWID()
335  c 使一個(gè)字符串,函數(shù)將c轉(zhuǎn)換為RWID數(shù)據(jù)類型。
336
337SELECT test_id from test_case where rowid=CHARTORWID('AAAA0SAACAAAALiAAA') 
338
339  CONVERT(,[,])
340  c尾字符串,dset、sset是兩個(gè)字符集,函數(shù)將字符串c由sset字符集轉(zhuǎn)換為dset字符集,sset的缺省設(shè)置為數(shù)據(jù)庫的字符集。
341
342  HEXTORAW()
343  x為16進(jìn)制的字符串,函數(shù)將16進(jìn)制的x轉(zhuǎn)換為RAW數(shù)據(jù)類型。
344
345  RAWTOHEX()
346  x是RAW數(shù)據(jù)類型字符串,函數(shù)將RAW數(shù)據(jù)類轉(zhuǎn)換為16進(jìn)制的數(shù)據(jù)類型。
347
348  ROWIDTOCHAR()
349  函數(shù)將ROWID數(shù)據(jù)類型轉(zhuǎn)換為CHAR數(shù)據(jù)類型。
350
351  TO_CHAR([[,)
352  x是一個(gè)data或number數(shù)據(jù)類型,函數(shù)將x轉(zhuǎn)換成fmt指定格式的char數(shù)據(jù)類型,如果x為日期nlsparm=NLS_DATE_LANGUAGE 控制返回的月份和日份所使用的語言。如果x為數(shù)字nlsparm=NLS_NUMERIC_CHARACTERS 用來指定小數(shù)位和千分位的分隔符,以及貨幣符號。
353
354NLS_NUMERIC_CHARACTERS ="dg", NLS_CURRENCY="string"
355
356  TO_DATE([,[,)
357  c表示字符串,fmt表示一種特殊格式的字符串。返回按照fmt格式顯示的c,nlsparm表示使用的語言。函數(shù)將字符串c轉(zhuǎn)換成date數(shù)據(jù)類型。
358
359  TO_MULTI_BYTE()
360  c表示一個(gè)字符串,函數(shù)將c的擔(dān)子截字符轉(zhuǎn)換成多字節(jié)字符。
361
362  TO_NUMBER([,[,)
363  c表示字符串,fmt表示一個(gè)特殊格式的字符串,函數(shù)返回值按照fmt指定的格式顯示。nlsparm表示語言,函數(shù)將返回c代表的數(shù)字。
364
365  TO_SINGLE_BYTE()
366  將字符串c中得多字節(jié)字符轉(zhuǎn)化成等價(jià)的單字節(jié)字符。該函數(shù)僅當(dāng)數(shù)據(jù)庫字符集同時(shí)包含單字節(jié)和多字節(jié)字符時(shí)才使用
367
368  其它單行函數(shù)
369
370  BFILENAME(
371,)
372  dir是一個(gè)directory類型的對象,file為一文件名。函數(shù)返回一個(gè)空的BFILE位置值指示符,函數(shù)用于初始化BFILE變量或者是BFILE列。
373
374  DECODE(,,[,,,[])
375  x是一個(gè)表達(dá)式,m1是一個(gè)匹配表達(dá)式,x與m1比較,如果m1等于x,那么返回r1,否則,x與m2比較,依次類推m3,m4,m5.直到有返回結(jié)果。
376
377  DUMP(,[,[,[,]]])
378  x是一個(gè)表達(dá)式或字符,fmt表示8進(jìn)制、10進(jìn)制、16進(jìn)制、或則單字符。函數(shù)返回包含了有關(guān)x的內(nèi)部表示信息的VARCHAR2類型的值。如果指定了n1,n2那么從n1開始的長度為n2的字節(jié)將被返回。
379
380  EMPTY_BLOB()
381  該函數(shù)沒有參數(shù),函數(shù)返回 一個(gè)空的BLOB位置指示符。函數(shù)用于初始化一個(gè)BLOB變量或BLOB列。
382
383  EMPTY_CLOB()
384  該函數(shù)沒有參數(shù),函數(shù)返回 一個(gè)空的CLOB位置指示符。函數(shù)用于初始化一個(gè)CLOB變量或CLOB列。
385
386  GREATEST()
387  exp_list是一列表達(dá)式,返回其中最大的表達(dá)式,每個(gè)表達(dá)式都被隱含的轉(zhuǎn)換第一個(gè)表達(dá)式的數(shù)據(jù)類型,如果第一個(gè)表達(dá)式是字符串?dāng)?shù)據(jù)類型中的任何一個(gè),那么返回的結(jié)果是varchar2數(shù)據(jù)類型, 同時(shí)使用的比較是非填充空格類型的比較。
388
389  LEAST()
390  exp_list是一列表達(dá)式,返回其中最小的表達(dá)式,每個(gè)表達(dá)式都被隱含的轉(zhuǎn)換第一個(gè)表達(dá)式的數(shù)據(jù)類型,如果第一個(gè)表達(dá)式是字符串?dāng)?shù)據(jù)類型中的任何一個(gè),將返回的結(jié)果是varchar2數(shù)據(jù)類型, 同時(shí)使用的比較是非填充空格類型的比較。
391
392  UID
393  該函數(shù)沒有參數(shù),返回唯一標(biāo)示當(dāng)前數(shù)據(jù)庫用戶的整數(shù)。
394
395  USER
396  返回當(dāng)前用戶的用戶名
397
398  USERENV()
399  基于opt返回包含當(dāng)前會話信息。opt的可選值為:
400
401  ISDBA    會話中SYSDBA腳色響應(yīng),返回TRUE
402  SESSIONID  返回審計(jì)會話標(biāo)示符
403  ENTRYID   返回可用的審計(jì)項(xiàng)標(biāo)示符
404  INSTANCE  在會話連接后,返回實(shí)例標(biāo)示符。該值只用于運(yùn)行Parallel 服務(wù)器并且有 多個(gè)實(shí)例的情況下使用。
405  LANGUAGE  返回語言、地域、數(shù)據(jù)庫設(shè)置的字符集。
406  LANG    返回語言名稱的ISO縮寫。
407  TERMINAL  為當(dāng)前會話使用的終端或計(jì)算機(jī)返回操作系統(tǒng)的標(biāo)示符。
408
409  VSIZE()
410  x是一個(gè)表達(dá)式。返回x內(nèi)部表示的字節(jié)數(shù)。
411
412  SQL中的組函數(shù)
413
414  組函數(shù)也叫集合函數(shù),返回基于多個(gè)行的單一結(jié)果,行的準(zhǔn)確數(shù)量無法確定,除非查詢被執(zhí)行并且所有的結(jié)果都被包含在內(nèi)。與單行函數(shù)不同的是,在解析時(shí)所有的行都是已知的。由于這種差別使組函數(shù)與單行函數(shù)有在要求和行為上有微小的差異.
415
416  組(多行)函數(shù)
417
418  與單行函數(shù)相比,oracle提供了豐富的基于組的,多行的函數(shù)。這些函數(shù)可以在select或select的having子句中使用,當(dāng)用于select子串時(shí)常常都和GROUP BY一起使用。
419
420  AVG([{DISYINCT|ALL}])
421  返回?cái)?shù)值的平均值。缺省設(shè)置為ALL.
422
423SELECT AVG(sal),AVG(ALL sal),AVG(DISTINCT sal) FROM scott.emp
424
425AVG(SAL) AVG(ALL SAL) AVG(DISTINCT SAL)
426
4271877.94118 1877.94118 1916.071413
428
429
430  COUNT({*|DISTINCT|ALL} )
431  返回查詢中行的數(shù)目,缺省設(shè)置是ALL,*表示返回所有的行。
432
433  MAX([{DISTINCT|ALL}])
434  返回選擇列表項(xiàng)目的最大值,如果x是字符串?dāng)?shù)據(jù)類型,他返回一個(gè)VARCHAR2數(shù)據(jù)類型,如果X是一個(gè)DATA數(shù)據(jù)類型,返回一個(gè)日期,如果X是numeric數(shù)據(jù)類型,返回一個(gè)數(shù)字。注意distinct和all不起作用,應(yīng)為最大值與這兩種設(shè)置是相同的。
435
436  MIN([{DISTINCT|ALL}])
437  返回選擇列表項(xiàng)目的最小值。
438
439  STDDEV([{DISTINCT|ALL}])
440  返回選者的列表項(xiàng)目的標(biāo)準(zhǔn)差,所謂標(biāo)準(zhǔn)差是方差的平方根。
441
442  SUM([{DISTINCT|ALL}])
443  返回選擇列表項(xiàng)目的數(shù)值的總和。
444
445  VARIANCE([{DISTINCT|ALL}])
446  返回選擇列表項(xiàng)目的統(tǒng)計(jì)方差。
447
448  用GROUP BY給數(shù)據(jù)分組
449
450  正如題目暗示的那樣組函數(shù)就是操作那些已經(jīng)分好組的數(shù)據(jù),我們告訴數(shù)據(jù)庫用GROUP BY怎樣給數(shù)據(jù)分組或者分類,當(dāng)我們在SELECT語句的SELECT子句中使用組函數(shù)時(shí),我們必須把為分組或非常數(shù)列放置在GROUP BY子句中,如果沒有用group by進(jìn)行專門處理,那么缺省的分類是將整個(gè)結(jié)果設(shè)為一類。
451
452select stat,counter(*) zip_count from zip_codes GROUP BY state;
453
454ST ZIP_COUNT
455-- ---------
456AK 360
457AL 1212
458AR 1309
459AZ 768
460CA 3982
461
462  在這個(gè)例子中,我們用state字段分類;如果我們要將結(jié)果按照zip_codes排序,可以用ORDER BY語句,ORDER BY子句可以使用列或組函數(shù)。
463
464sel

上一頁  [1] [2] [3] [4] 下一頁

正在看的ORACLE教程是:OraclePL/SQL單行函數(shù)和組函數(shù)詳解。ect stat,counter(*) zip_count from zip_codes GROUP BY state ORDER BY COUNT(*) DESC;
465
466ST COUNT(*)
467-- --------
468NY 4312
469PA 4297
470TX 4123
471CA 3982
472
473  用HAVING子句限制分組數(shù)據(jù)
474
475  現(xiàn)在你已經(jīng)知道了在查詢的SELECT語句和ORDER BY子句中使用主函數(shù),組函數(shù)只能用于兩個(gè)子串中,組函數(shù)不能用于WHERE子串中,例如下面的查詢是錯(cuò)誤的 :
476
477錯(cuò)誤
478SELECT sales_clerk,SUN(sale_amount) FROM gross_sales WHERE sales_dept='OUTSIDE' AND SUM(sale_amount)>10000 GROUP BY sales_clerk
479
480
481  這個(gè)語句中數(shù)據(jù)庫不知道SUM()是什么,當(dāng)我們需要指示數(shù)據(jù)庫對行分組,然后限制分組后的行的輸出時(shí),正確的方法是使用HAVING語句:
482
483SELECT sales_clerk,SUN(sale_amount)
484FROM gross_sales
485WHERE sales_dept='OUTSIDE'
486GROUP BY sales_clerk
487HAVING SUM(sale_amount)>10000;
488
489  嵌套函數(shù)
490
491  函數(shù)可以嵌套。一個(gè)函數(shù)的輸出可以是另一個(gè)函數(shù)的輸入。操作數(shù)有一個(gè)可繼承的執(zhí)行過程。但函數(shù)的優(yōu)先權(quán)只是基于位置,函數(shù)遵循由內(nèi)到外,由左到右的原則。嵌套技術(shù)一般用于象DECODE這樣的能被用于邏輯判斷語句IF.THENELSE的函數(shù)。
492
493  嵌套函數(shù)可以包括在組函數(shù)中嵌套單行函數(shù),或者組函數(shù)嵌套入單行函數(shù)或組函數(shù)中。比如下面的例子:
494
495SELECT deptno, GREATEST(COUNT(DISTINCT job),COUNT(DISTINCT mgr) cnt,
496COUNT(DISTINCT job) jobs,
497COUNT(DISTINCT mgr) mgrs
498FROM emp
499GROUP BY deptno;
500
501DEPTNO CNT JOBS MGRS
502------ --- ---- ----
50310 4 4 2
50420 4 3 4
50530 3 3 2

上一頁    

上一頁  [1] [2] [3] [4] 

您可能感興趣的文章:
  • SQL重復(fù)記錄查詢 查詢多個(gè)字段、多表查詢、刪除重復(fù)記錄的方法
  • thinkphp中多表查詢中防止數(shù)據(jù)重復(fù)的sql語句(必看)
  • SQL Server多表查詢優(yōu)化方案集錦
  • MySQL左聯(lián)多表查詢where條件寫法示例
  • sqlserver 多表查詢不同數(shù)據(jù)庫服務(wù)器上的表
  • MySQL 多表查詢實(shí)現(xiàn)分析
  • 一個(gè)多表查詢的SQL語句
  • Orancle的SQL語句之多表查詢和組函數(shù)

標(biāo)簽:襄陽 股票投資 嘉峪關(guān) 聊城 池州 通化 南平 南平

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《OraclePL/SQL單行函數(shù)和組函數(shù)詳解》,本文關(guān)鍵詞  OraclePL,SQL,單行,函數(shù),和,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《OraclePL/SQL單行函數(shù)和組函數(shù)詳解》相關(guān)的同類信息!
  • 本頁收集關(guān)于OraclePL/SQL單行函數(shù)和組函數(shù)詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章