|
3.10.1 IF and CASE Expressions [Top]
-----------------------------------------------------------------------------------
SELECT product.id,
product.quantity,
IF product.quantity < 20
THEN 'Understocked'
ELSE IF product.quantity > 50
THEN 'Overstocked'
ELSE ''
ENDIF
ENDIF AS level
FROM product
ORDER BY product.quantity;
-----------------------------------------------------------------------------------
SELECT CASE region
WHEN 'Western' THEN 1
WHEN 'Central' THEN 2
WHEN 'Eastern' THEN 3
ELSE 0
END AS sort_order,
region,
COUNT(*) AS orders
FROM sales_order
WHERE sort_order > 0
GROUP BY region
ORDER BY sort_order;
-----------------------------------------------------------------------------------
SELECT CASE
WHEN sales_rep = 129
AND region = 'Western'
THEN 1
WHEN region = 'Western'
THEN 2
WHEN region IN ( 'Eastern', 'Central' )
THEN 3
ELSE 0
END AS sort_order,
CASE sort_order
WHEN 1 THEN 'Western 129'
WHEN 2 THEN 'Other Western'
WHEN 3 THEN 'Eastern and Central'
END AS breakdown,
COUNT(*) AS orders
FROM sales_order
WHERE sort_order > 0
GROUP BY sort_order
ORDER BY sort_order;
-----------------------------------------------------------------------------------
3.11 Top 15 Scalar Builtin Functions [Top]
-----------------------------------------------------------------------------------
CREATE TABLE t1 (
key_1 UNSIGNED BIGINT NOT NULL,
non_key_1 VARCHAR ( 100 ) NOT NULL,
last_updated TIMESTAMP NOT NULL,
PRIMARY KEY ( key_1 ) );
INSERT t1 VALUES ( 1, '123.45', '2003-10-19 15:32.25.123' );
SELECT CAST ( key_1 AS VARCHAR ( 1 ) ) AS a,
CAST ( key_1 AS VARCHAR ) AS b,
CAST ( non_key_1 AS NUMERIC ( 10, 2 ) ) AS c,
CAST ( non_key_1 AS NUMERIC ) AS d,
CAST ( last_updated AS DATE ) AS e,
CAST ( last_updated AS TIME ) AS f
FROM t1;
-----------------------------------------------------------------------------------
SELECT EXPRTYPE ( '
SELECT CAST ( key_1 AS VARCHAR ( 1 ) ) AS a,
CAST ( key_1 AS VARCHAR ) AS b,
CAST ( non_key_1 AS NUMERIC ( 10, 2 ) ) AS c,
CAST ( non_key_1 AS NUMERIC ) AS d,
CAST ( last_updated AS DATE ) AS e,
CAST ( last_updated AS TIME ) AS f
FROM t1
', 2 );
-----------------------------------------------------------------------------------
CREATE TABLE t1 (
key_1 UNSIGNED BIGINT NOT NULL,
non_key_1 VARCHAR ( 100 ) NULL,
non_key_2 TIMESTAMP NULL,
PRIMARY KEY ( key_1 ) );
INSERT t1 VALUES ( 2, NULL, NULL );
SELECT COALESCE ( non_key_1, 'empty' ) AS a,
COALESCE ( non_key_2, CURRENT TIMESTAMP ) AS b
FROM t1;
-----------------------------------------------------------------------------------
SELECT customer.company_name AS company_name,
product.name AS product_name,
product.description AS product_description,
COALESCE (
SUM ( sales_order_items.quantity ),
0.00 ) AS quantity,
COALESCE (
SUM ( product.unit_price
* sales_order_items.quantity ),
0.00 ) AS amount
FROM ( customer
CROSS JOIN product )
LEFT OUTER JOIN
( sales_order
INNER JOIN sales_order_items
ON sales_order_items.id = sales_order.id )
ON customer.id = sales_order.cust_id
AND product.id = sales_order_items.prod_id
WHERE customer.state = 'DC'
AND product.name LIKE '%shirt%'
GROUP BY customer.company_name,
product.name,
product.description
ORDER BY customer.company_name,
product.name,
product.description;
-----------------------------------------------------------------------------------
SELECT LEFT ( '12345', 2 ) AS a,
RIGHT ( '12345', 2 ) AS b,
SUBSTR ( '12345', 2, 3 ) AS c,
SUBSTR ( '12345', 2 ) AS d;
-----------------------------------------------------------------------------------
CREATE TABLE t1 (
key_1 UNSIGNED BIGINT NOT NULL,
non_key_1 VARCHAR ( 100 ) NOT NULL,
PRIMARY KEY ( key_1 ) );
INSERT t1 VALUES ( 1, '=A=B+C' );
SELECT SUBSTR ( non_key_1,
LOCATE ( non_key_1, '=', 2 ) + 1 )
FROM t1;
-----------------------------------------------------------------------------------
CREATE TABLE t1 (
key_1 UNSIGNED BIGINT NOT NULL,
non_key_1 NUMERIC ( 11, 2 ) NOT NULL,
PRIMARY KEY ( key_1 ) );
INSERT t1 VALUES ( 1, 12345.78 );
INSERT t1 VALUES ( 2, 0.00 );
INSERT t1 VALUES ( 3, 12.34 );
SELECT RIGHT ( STRING ( REPEAT ( '0', 10 ), non_key_1 ), 10 ) AS a
FROM t1
ORDER BY key_1;
-----------------------------------------------------------------------------------
MESSAGE STRING (
'USER ',
CURRENT USER,
' at ',
CURRENT TIMESTAMP ) TO CONSOLE;
----------------------------------------------------------------------------------- |
|