1+ /* ***************************************/
2+ /* Numeric Functions */
3+ /* ***************************************/
4+
5+ SELECT ROUND(7 .58 ,1 );
6+
7+ SELECT TRUNCATE(7 .58374 ,3 );
8+
9+ SELECT CEILING (7 .58374 );
10+ SELECT CEILING (7 .1 );
11+
12+ SELECT FLOOR(7 .6 );
13+
14+ SELECT ABS(- 5 .4 );
15+
16+ SELECT RAND();
17+
18+ /* ***************************************/
19+ /* String Functions */
20+ /* ***************************************/
21+
22+ SELECT LENGTH(' hello' );
23+
24+ SELECT UPPER (' hello' );
25+
26+ SELECT lower (' Hello' );
27+
28+ SELECT LTRIM(' Hello' );
29+
30+ SELECT RTRIM(' Hello ' );
31+
32+ SELECT TRIM (' I am so AWESOME! ' );
33+
34+ SELECT LEFT(' Kindergarten' ,4 );
35+
36+ SELECT RIGHT(' Kindergarten' ,6 );
37+
38+ SELECT SUBSTRING (' Kindergarten' , 3 , 5 );
39+
40+ SELECT LOCATE(' n' , ' Kindergarten' );
41+
42+ SELECT LOCATE(' y' , ' Kindergarten' );
43+ SELECT LOCATE(' garten' , ' Kindergarten' );
44+
45+ SELECT REPLACE(' Kindergarten' , ' garten' , ' garden' );
46+
47+ SELECT CONCAT(' John' , ' ' ,' Snow' );
48+
49+ /* ***************************************/
50+ /* Date Functions */
51+ /* ***************************************/
52+ SELECT NOW(), CURDATE(), CURTIME(), YEAR(NOW()), MONTH(NOW()), DATE (NOW()),
53+ DAYNAME(NOW()), MONTHNAME(NOW());
54+
55+ SELECT EXTRACT(DAY FROM NOW()), EXTRACT(MONTH FROM NOW()), EXTRACT(YEAR FROM NOW());
56+
57+ USE mosh_sql_store;
58+
59+ SELECT *
60+ FROM orders
61+ WHERE YEAR(order_date) > YEAR(NOW());
62+
63+ /* ***************************************/
64+ /* Formatting Date Times */
65+ /* ***************************************/
66+
67+ SELECT DATE_FORMAT(NOW(), ' %D %M %Y' );
68+
69+ SELECT DATE_FORMAT(NOW(), ' %d %m %y' );
70+
71+ SELECT TIME_FORMAT(NOW(), ' %H %m %p' );
72+
73+ /* ***************************************/
74+ /* Calcualting Date Times */
75+ /* ***************************************/
76+
77+ -- add 1 day
78+ SELECT DATE_ADD(NOW(), INTERVAL 1 DAY);
79+
80+ -- subtract 1 year
81+ SELECT DATE_ADD(NOW(), INTERVAL - 1 YEAR);
82+
83+ SELECT DATEDIFF(' 2019-01-01' , ' 2020-01-01' );
84+
85+ -- number of seconds since Mid Night
86+ SELECT TIME_TO_SEC(' 09:00' ) - TIME_TO_SEC(' 09:02' );
87+
88+ /* ***************************************/
89+ /* IFNULL AND COALESCE */
90+ /* ***************************************/
91+
92+ USE mosh_sql_store;
93+
94+ SELECT order_id, customer_id, order_date, status,
95+ IFNULL(shipped_date,' NOT ASSIGNED' ) AS shipped_date,
96+ COALESCE(shipper_id, comments, ' PENDING' ) AS shipper
97+ FROM orders;
98+
99+ /* customer name, phone*/
100+ SELECT CONCAT(first_name, ' ' , last_name) AS customer_name,
101+ COALESCE(phone,' UNKNOWN' ) AS phone
102+ FROM customers;
103+
104+
105+ /* ***************************************/
106+ /* IF function */
107+ /* ***************************************/
108+ /*
109+ IF (expression, first, second)
110+ */
111+
112+ SELECT order_id, order_date,
113+ IF(YEAR(order_date) >= YEAR(NOW()), ' Active' , ' Archived' ) AS status
114+ FROM orders;
115+
116+ /* product and its ordered frequncy category */
117+ SELECT p .product_id , p .name , COUNT (p .product_id ) AS times_of_orders,
118+ IF(COUNT (p .product_id ) > 1 , ' Many times' , ' Once' ) AS frequency_category
119+ FROM products p
120+ JOIN order_items oi ON oi .product_id = p .product_id
121+ GROUP BY 1 ;
122+
123+ /* ***************************************/
124+ /* CASE function */
125+ /* ***************************************/
126+
127+ SELECT order_id, order_date,
128+ CASE
129+ WHEN YEAR(order_date) >= YEAR(NOW()) THEN ' Active'
130+ WHEN YEAR(order_date) = YEAR(DATE_ADD(NOW(), INTERVAL - 1 YEAR)) THEN ' Last Year'
131+ ELSE ' Archived'
132+ END AS status
133+ FROM orders;
0 commit comments