This version of the app's documentation is outdated. Please find the information you're looking for here: |
Use case:
You have a table with the stationary orders. You need to output a new column in the table with the order priority according to the total sum of money: less than $1000 is Low, from $1000 to $2000 is Medium, and more than $2000 is High.
Solution:
Enter the following SQL query:
SELECT *, CASE WHEN 'Subtotal' < 1000 THEN "LOW" WHEN 'Subtotal' >= 1000 AND 'Subtotal' < 2000 THEN "MEDIUM" ELSE "HIGH" END AS 'Priority' FROM T1 |
CASE WHEN ... THEN ... ELSE ... END goes through conditions and return a value when the first condition is met.
AS '...' outputs a new 'Priority' column.If you want to replace the words Low, Medium and High by prominent statuses using the default Status macro or the Handy Status macro, just place a one-column table containing each status and the same column label in the macro body. Don't change anything in the SQL query. |
Use case:
You have a table with two columns: Target date and Completion date. You need to compare and rate these dates:
Solution:
Enter the following SQL query:
SELECT *, CASE WHEN (('Completion date' - 'Target date') / "24h") < 5 THEN "ON TIME" WHEN (('Completion date' - 'Target date') / "24h") > 5 AND (('Completion date' - 'Target date') / "24h") <= 10 THEN "LATE" ELSE "VERY LATE" END AS 'Rating' FROM T1 |
Use case:
You have a table with the number of added lines of code and the number of defects. You need to calculate the quality of the code. The number of defects less than one defect per 10 lines indicates the good quality of the code. Otherwise the quality of the code is bad.
Solution:
Enter the following SQL query:
SELECT *, ( 'Number of defects' * 10 / 'Lines of code added' ) AS 'Defects per 10 lines', CASE WHEN ( 'Number of defects' * 10 / 'Lines of code added' ) < 1 THEN "Good" ELSE "Bad" END AS 'Code quality' FROM T1 |
('...' * 10 / '...') AS '...' calculates the number of defects per 10 lines of code and outputs the 'Defects per 10 lines' column.
CASE WHEN ... THEN ... ELSE ... END AS '...' goes through conditions and return a value when the first condition is met and outputs the 'Code quality' column.You can merge two columns containing text with the help of formulas:
|
Use case:
You have two tables where the columns differ.
You need to merge two tables where the entrys meet the conditions:
Solution:
Enter the following SQL query:
SELECT * FROM T1 JOIN T2 ON T1.'Transaction ID' = T2.'Transaction ID' WHERE ( 'Transaction Date' >= "10 / 1 / 2018" AND 'Transaction Date' < "11 / 1 / 2018" ) AND ( 'Customer Type' = "Business" ) |
WHERE ('...' >= "10/1/2018" AND '...' < "11/1/2018") AND ('...' = "...") extracts only those records that fulfill a specified condition.
Use case:
You have a table containing a period of time (start date and end date).
You need to count the number of workdays during this time period.
Advanced use case:
You have an additional table with national holidays which you also shouldn't consider as workdays.
Solution:
Enter the following SQL query:
SELECT *, 'Days' - 2 * (('Days' / 7)::integer) - CASE WHEN 'Days' % 7 = 0 THEN 0 WHEN 'Start date'::Date->getDay() = 0 THEN 1 WHEN 'Start date'::Date->getDay() + 'Days' % 7 = 6 THEN 1 WHEN 'Start date'::Date->getDay() + 'Days' % 7 > 6 THEN 2 ELSE 0 END AS 'Work days' FROM (SELECT *, (T1.'End date' - T1.'Start date') / "1d" + 1 AS 'Days' FROM T1) |
Solution for the advanced use case:
Enter the following SQL query:
SELECT *, 'Days' - 2 * (('Days' / 7)::integer) - CASE WHEN 'Days' % 7 = 0 THEN 0 WHEN 'Start date'::Date->getDay() = 0 THEN 1 WHEN 'Start date'::Date->getDay() + 'Days' % 7 = 6 THEN 1 WHEN 'Start date'::Date->getDay() + 'Days' % 7 > 6 THEN 2 ELSE 0 END - (SELECT COUNT(*) FROM (SELECT *,'Holiday'::Date->getDay() AS 'Day' FROM T2) WHERE 'Holiday' >= TT.'Start date' AND 'Holiday' <= TT.'End date' AND 'Day' > 0 AND 'Day' < 6) AS 'Work days' FROM (SELECT *, ('End date' - 'Start date') / "1d" + 1 AS 'Days' FROM T1) AS TT |