Come utilizzare Oracle funzione in istruzione SQL

March 28

Come utilizzare Oracle funzione in istruzione SQL


Oracle SQL offre una serie di funzioni built-in che permettono di eseguire calcoli matematici e la manipolazione di stringhe in linea in una query. Le funzioni sono facili da usare come selezionando una colonna da una tabella, ma abbastanza potente per fornire valori assoluti, seno, coseno, logaritmi, sostituzione di stringa utilizzando le espressioni regolari e molti altri processi utili. In breve, la comprensione e l'utilizzo di funzioni built-in di Oracle SQL può rendere il vostro SQL più concisa, efficace e leggibile.

istruzione

Uso delle funzioni di SQL Oracle

1 Utilizzare la funzione ROUND. Supponete di essere un insegnante di scuola superiore e di monitorare i punteggi dei test degli studenti in una colonna chiamata TestAverage da una tabella denominata TestScoreAverages, ogni media calcolata fuori per cinque posti. Per segnalare i punteggi ai vostri studenti, si vuole arrotondare le medie all'intero più vicino. Tale richiesta sarebbe simile a questa:

SELECT Nome, ROUND (TestAverage, 0) FROM TestScoreAverages

2 Utilizzare la funzione CEIL. Se ti sentivi particolarmente generoso si potrebbe utilizzare una funzione simile, Ceil, che arrotonda sempre un numero fino al prossimo numero intero. Quella query sarebbe simile a questa:

SELECT Nome CEIL (TestAverage) FROM TestScoreAverages

3 Utilizzare la funzione AVG. Supponiamo, però, che tutto quello che aveva era prime dati prova di musica da una tabella chiamata TestScores. Per ogni prova uno studente prende, il suo nome e il punteggio del test ricevono una nuova riga in una tabella che assomiglia a questo:

nome TestScore
Tim 93
Sarah 100
Frank 45
Tim 88
Sarah 100
Frank 67
Tim 91
Sarah 99
Frank 73

Per calcolare il punteggio medio di prova per ogni studente con la query SQL, è possibile utilizzare la funzione AVG SQL combinata con una clausola Group By:

SELECT Nome, AVG (TestScore)
DA TestScores
Gruppo per nome

4 Utilizzare la funzione MAX. Anche in questo caso, immaginate di essere uno di quei maestri soprattutto dal cuore tenero e volete che i vostri studenti rappresentati solo da loro meglio lavoro. È possibile selezionare il punteggio più alto per ogni studente utilizzando la funzione MAX:

SELECT Nome, MAX (TestScore)
DA TestScores
Gruppo per nome

5 Utilizzare un'espressione matematica all'interno di una chiamata di funzione. Ora, invece di massimizzare i punteggi degli studenti selezionando solo il loro miglior test, si supponga di offrire una cessione del credito in più, che, se completato, aumenterà il punteggio di ogni test del cinque per cento. (Per ora immaginate che ogni studente ha completato la cessione extra-credito.) È possibile includere espressioni matematiche all'interno della chiamata di funzione:

SELECT Nome, AVG (TestScore + (TestScore * .05))
DA TestScores
Gruppo per nome

6 Utilizzare la funzione DECODE. Infine, supponiamo, più realisticamente, che solo alcuni degli studenti hanno completato la cessione del credito in più. Si traccia questo con una colonna nella tabella TestScores chiamato ExtraCredit. Se lo studente ha completato l'assegnazione, si imposta ExtraCredit a 1. Se non avesse, si imposta ExtraCredit a 0. A questo punto è possibile utilizzare la funzione DECODE per aggiungere la logica per la query che si applicherà il bonus cinque per cento solo agli studenti che meritano esso.

SELECT Nome, decodificare (EXTRACREDIT, 1, AVG (TestScore + (TestScore * .05)),

0, AVG(TestScore)) as AverageTestScore

DA TestScores
Gruppo per nome

La funzione di decodifica funziona come If / Then logica. Quanto sopra è l'equivalente di "Se ExtraCredit = 1, quindi aggiungere il cinque per cento per ogni punteggio di prova prima di una media, se ExtraCredit = 0, poi semplicemente la media dei punteggi dei test."

Consigli e avvertenze

  • Mentre questo articolo esplora solo poche funzioni native, Oracle PL / SQL permette di funzioni definite dall'utente, così, dando lo sviluppatore di SQL possibilità quasi illimitate per l'elaborazione dei dati all'interno di una query. Vedere "funzioni definite dall'utente" a risorse per ulteriori informazioni.