SQL FUNCTION
SQL Server you can use lots of built-in
functions or you may create your own functions.
We want to find the average grade for a specific Product:
STDEV(): The STDEV in SQL simply returns the Standard Deviation of total number of records present in the specified column.
Syntax:
We want to find the Standard Deviation for a specific Product:
COUNT(): The COUNT() function returns the number of rows that matches a specified criteria. The COUNT(column_name) function returns the number of values (NULL values will not be Counted) of the specified column.
Syntax:
MAX():
Syntax:
MIN():
Syntax:
REGEXP_SUBSTR():
Here we will learn to use some of the most
used built-in functions and in addition we will create our own function.
Built-in Functions-
SQL has many built-in functions for
performing calculations on data. We have 2 categories of functions, namely Aggregate
functions and scalar functions.
Aggregate functions return a single value,
calculated from values in a column, while scalar functions return a single
value, based on the input value.
Aggregate
functions-examples:
- AVG()-Returns the average value
- STDEV()-Returns the standard deviation value
- COUNT()-Returns the number of rows
- MAX()-Returns the largest value
- MIN()-Returns the smallest value
- SUM()-Returns the sum
Scalar
functions-examples:
- UPPER()-Converts a field to upper case.
- LOWER()-Converts a field to lower case.
- LEN()-Returns the length of a text field.
- ROUND()-Rounds a numeric field to the number of decimals specified.
- GETDATE()-Returns the current system date and time.
- REGEXP_SUBSTR()-The REGEXP_SUBSTR function use used to return the substring that matches a regular expression within a string.
- LISTAGG():As a single-set aggregate function, LISTAGG operates on all rows and returns a single output row.
String Functions: Here are some useful functions used to
manipulate with strings in SQL Server.
- CHAR
- CHARINDEX
- REPLACE
- SUBSTRING
- LEN
- REVERSE
- LEFT
- RIGHT
- LOWER
- UPPER
- LTRIM
- RTRIM
Date and Time Functions: Here are some useful Date and Time functions
in SQL Server.
- DATEPART
- GETDATE
- DATEADD
- DATEDIFF
- DAY
- MONTH
- YEAR
- ISDATE
Mathematics and Statistics Functions: Here are some useful functions for mathematics and statistics in SQL Server.
- COUNT
- MIN, MAX
- COS, SIN, TAN
- SQRT
- STDEV
- MEAN
- AVG
AVG():
The AVG() function returns the average value of a numeric column.
Syntax:
SELECT AVG(column_name) FROM table_name;
Example:
We Have a Products Table.
+-----------+---------------+------------+------------+------+-------+-----+-------+
|
ProductID | ProductName | SupplierID | CategoryID | Unit | Price |
+-----------+---------------+------------+------------+------+-------+-----+-------+
| 1 | Chais | 1 | 1 | 10 boxes * 20 bags | 18 |
| 2 | Chang | 1 | 1 | 24
-12 oz bottles | 19 |
| 3 | Aniseed Syrnp | 1 | 1 |12 -500 ml bottles | 18 |
+-----------+---------------+------------+------------+------+-------+-----+-------+
SELECT AVG(Price) AS AvgGrade FROM Products where SupplierID=1;
Output:
+-----------+
|
AvgGrade |
+-----------+
|
15.6667 |
+-----------+
STDEV(): The STDEV in SQL simply returns the Standard Deviation of total number of records present in the specified column.
Syntax:
Select STDEV(Column_Name) from table_name;
Example:
We Have a Products Table.
+-----------+------------------+------------+------------+--------------------+-------+
|
ProductID | ProductName | SupplierID
| CategoryID | Unit | Price
|
+-----------+------------------+------------+------------+--------------------+-------+
|
38 | Cote de Blaye | 18 | 1 |12
-75 d bottles | 263.5 |
|
39 | Chartreuse verte | 18 | 1 |12 -750 cc bottles | 18 |
+-----------+------------------+------------+------------+--------------------+-------+
Select STDEV(Price) AS AveragePrice FROM Products;
Output:
+------------------+
| AveragePrice
|
+------------------+
|
173.594714781297 |
+------------------+
COUNT(): The COUNT() function returns the number of rows that matches a specified criteria. The COUNT(column_name) function returns the number of values (NULL values will not be Counted) of the specified column.
Syntax:
Select COUNT(Column_Name) from table_name;
The COUNT(*) function returns the number of records in a table.
Select COUNT(*) from table_name;
Example:
We Have a Products Table.
+-----------+---------------+------------+------------+------+-------+-----+-------+
|
ProductID | ProductName | SupplierID | CategoryID | Unit | Price |
+-----------+---------------+------------+------------+------+-------+-----+-------+
| 1 | Chais | 1 | 1 | 10 boxes * 20 bags | 18 |
| 2 | Chang | 1 | 1 | 24
-12 oz bottles | 19 |
| 3 | Aniseed Syrnp | 1 | 2 |12 -500 ml bottles | 10 |
+-----------+---------------+------------+------------+------+-------+-----+-------+
SELECT COUNT(*) as NumbersofCustomers FROM Products;
Output:
+------------------------+
| NumbersofCustomers |
+------------------------+
| 3 |
+------------------------+
MAX():
Syntax:
Select MAX(Column_Name) from table_name;
The MAX(Column_Name) function returns the number of records in a table.
Select MAX(Column_Name) from table_name;
Example:
We Have a Products Table.
+-----------+---------------+------------+------------+------+-------+-----+-------+
|
ProductID | ProductName | SupplierID | CategoryID | Unit | Price |
+-----------+---------------+------------+------------+------+-------+-----+-------+
| 1 | Chais | 1 | 1 | 10 boxes * 20 bags | 18 |
| 2 | Chang | 1 | 1 | 24
-12 oz bottles | 19 |
| 3 | Aniseed Syrnp | 1 | 2 |12 -500 ml bottles | 10 |
+-----------+---------------+------------+------------+------+-------+-----+-------+
SELECT MAX(Price) as maxC FROM Products;
Output:
+----------+
| maxC
|
+----------+
| 19 |
+----------+
MIN():
Syntax:
Select MIN(Column_Name) from table_name;
The MIN(Column_Name) function returns the number of records in a table.
Select MIN(Column_Name) from table_name;
Example:
We Have a Products Table.
+-----------+---------------+------------+------------+------+-------+-----+-------+
|
ProductID | ProductName | SupplierID | CategoryID | Unit | Price |
+-----------+---------------+------------+------------+------+-------+-----+-------+
| 1 | Chais | 1 | 1 | 10 boxes * 20 bags | 18 |
| 2 | Chang | 1 | 1 | 24
-12 oz bottles | 19 |
| 3 | Aniseed Syrnp | 1 | 2 |12 -500 ml bottles | 10 |
+-----------+---------------+------------+------------+------+-------+-----+-------+
SELECT MIN(Price) as minC FROM Products;
Output:
+----------+
| minC
|
+----------+
| 10 |
+----------+
Here are some scenario-based statements.
regexp_substr(str, '[a-z]{6}') /* returns the first string of 6 characters */
regexp_substr(str, '[0-9]+') /* returns the first matching numbers */
regexp_substr(str, '[a-z].*$') /* returns the first letter followed by all other characters */
regexp_substr(str, '/[a-z].*$') /* returns / followed by a letter then all other characters */
SELECT REGEXP_SUBSTR ('1,2,3,4,5,6', '[^,]+', 1, level) as REGEXPSUBSTR
FROM DUAL
connect by level <= length(REGEXP_REPLACE('1,2,3,4,5,6','[^,]+'))+1;
+-----------------------+
| REGEXPSUBSTR |
+-----------------------+
| 1 |
| 2 |
| 3 |
| 5 |
| 6 |
+------------------------+
LISTAGG():
we have one Table Name is DemoListagg and column name C_name.
+-----------------------+
| C_Name |
+-----------------------+
| 1 |
| 2 |
| 3 |
| 5 |
| 6 |
+------------------------+
Example:
select LISTAGG(C_name,', ' ON OVERFLOW TRUNCATE WITH COUNT)
WITHIN GROUP (ORDER BY C_name) from DemoListagg;
Output:
1,2,3,4,5,6,