--- title: "SQL Common Functions" --- # SQL Common Functions > Functions are available in most SQL databases, and can provide some helpful utility to any queries you may be calling in Ignition. This page contains some commonly used SQL functions that some databases contain. The exact functions available and usage depends on the database, so always check your database's documentation for a more complete list of available functions. ## Using Column Values It is important to understand that when calling these functions, you generally use a column name instead of a static number. For the sake of simplicity, the tables below demonstrate how to use the functions with static values, but they usually are switched for column names, ie: ```sql title="Pseudocode - Passing a Column to a Function" SELECT SUM(downtime_duration) FROM downtime_events ``` ### Example Table Some of the functions on this table are better demonstrated when used in conjunction with a table (i.e., using the AVG() function with a single value isn't too interesting). Thus, the following table contains sample data that the functions on this page will utilize if necessary. #### Products Table | id | product_quantity | product_name | date_added | date_updated | origin_state | | -- | ---------------- | ------------ | ---------------------------- | ---------------------------- | ------------ | | 1 | 100 | apples | Mon Jan 29 00:00:00 PST 2018 | Mon Jan 29 12:00:00 PST 2018 | California | | 2 | 24 | oranges | Mon Feb 13 00:00:00 PST 2017 | Mon Feb 13 09:00:00 PST 2017 | Florida | | 3 | 56 | grapes | Mon Mar 07 00:00:00 PST 2016 | Mon Mar 07 05:00:00 PST 2016 | California | ## Numeric Functions | Function | Description | Example | Output | |---|---|---|---| | ABS(value) | Returns the absolute value of the passed number or column. |
SELECT ABS(-3.5)| 3.5 | | AVG(value) | Takes the values of a single numeric column, and returns an average. A WHERE clause may be used in the same statement to filter out some of the rows on the table. |
SELECT AVG(product_quantity)FROM products| 60 | | CEILING(value) | Returns the next greatest integer value based on the argument provided. Thus, CEILING(10.1 ) would return 11. |
SELECT CEILING(10.1)| 11 | | COUNT(value) | Returns a row count. Typically takes either a single column, *, or 1. Regardless of which row is passed, the function will return the number of rows on the table that meet the criteria of any WHERE clauses. |
SELECT COUNT(*)FROM products| 3 | | FLOOR(value) | Returns the next smallest integer value based on the argument provided. Thus, FLOOR(10.9) would return 10. |
SELECT FLOOR(10.9)| 10 | | MAX(value) | Returns the largest value from the specified column. |
SELECT MAX(product_quantity)FROM products| 100 | | MIN(value) | Returns the smallest value from the specified column. |
SELECT MIN(product_quantity)FROM products| 24 | | ROUND(value, decimal_places) | Returns a number rounded to a certain number of decimal places.Takes two parameters. The first is the number to round to, and the second is the number of decimal places to round to. |
SELECT ROUND(1.234, 1)| 1.2 | | SUM(value) | Takes the value of a single numeric column, and returns the sum. A WHERE clause may be used in the same statement to filter out some of the rows on the table. |
SELECT SUM(product_quantity)FROM products| 180 | ## String Functions | Function | Description | Example | Output | |---|---|---|---| | CONCAT(value1, value 2,....valueN) | Concatenates multiple strings or values. Some databases may require you to convert each value to a string before concatenating. |
SELECT CONCAT(product_name, ':', product_quantity)FROM products| apples:100oranges:24grapes:56 | | LOWER(value) | Converts a string to lowercase. |
SELECT LOWER('MAKE Me smALL') | make me small |
| LTRIM(value) | Removes leading space from a string. | SELECTCT LTRIM(' Take a little off the left') | Take a little off the left |
| REPLACE(orignal_string,target_string, replacement_string) | Searchings a string for a substring (target_string), and replaces the substring with the replacement_string. | SELECT REPLACE('Who is awesome', 'Who is', 'You are') | You are awesome |
| RTRIM(value) | Removes leading space from a string | SELECT RTRIM('Take a little off the right ') | Take a little off the right |
| SUBSTRING(orignal_string,character_index, [length]) | Extracts a substring from another string based on character index. Takes two parameters: the original string, and the character index to start at. An optional third parameter can specify the number of characters to extract.Character index is one-based, so the first character in the string rests at index 1. | SELECT SUBSTRING('This is my string!' , 9, 9) | my string |
| TRIM(value) | Removes both leading and trailing space from a string. | SELECT TRIM(' Trim Both Sides ') | Trim Both Sides |
| UPPER(value) | Converts a string to uppercase. | SELECT UPPER('super size me') | SUPER SIZE ME |
## Date Functions
There are many date and time functions for each database (MySQL, MSSQL, Oracle, etc), but they all vary wildly. These examples work in most databases:
| Function | Description | Example | Output |
|---|---|---|---|
| CURRENT_TIMESTAMP() | Returns the current date and time, as reported by the database. | SELECT CURRENT_TIMESTAMP()| Returns the current time | | TIMEDIFF(date1, date2) | Returns a difference between two dates. Assumes thate date1 is the most recent datetime. |
SELECT TIMEDIFF(date_updated, date_added)FROM productsWHERE id = 1| Thu Jan 01 12:00:00 PST 1970 | ## Logic Functions | Function | Description | Example | Output | |---|---|---|---| | COALESCE(value1, value2,...valueN) | Returns the first non-null expression. |
SELECT COALESCE(NULL, 'Pick me!')| Pick me! | | ISNULL(expression) | Returns true if an expression is NULL. |
SELECT ISNULL(NULL)
SELECT ISNULL(14)| TrueFalse | | NULLIF(expression1, expression2) | Compares two expressions. If they are equal to each other, then the function returns a NULL. If the two expressions are not equal, the first expression passed to NULLIF() is returned. |
SELECT NULLIF(100, 100)
SELECT NULLIF(100, 3)| NULL100 | ## Group By Clause The GROUP BY statement is used in conjunction with the aggregate functions to group the result-set by one or more columns. This way you can find the MIN, MAX, Average, COUNT, etc., for each group of rows. Grouping can also be done for multiple columns, with precedence going in the order that they are listed. ```sql title="Pseudocode - Passing a Column to a Function" SELECT SUM(column1) FROM table GROUP BY column2 ``` #### Example Here, we are grabbing the sum of product quantity for each origin state. ```sql title="SQL - Simple Group By" SELECT SUM(product_quantity), origin_state, FROM products_table GROUP BY origin_state ```