Enrollment No.: Experiment Date: Experiment No.- 6 Aim: To write a query for group by, having and order by clause. 1. Order By Clause When you use the SELECT statement to query data from a table, the result set is not sorted in any orders. To sort the result set, you use the ORDER BY clause. The ORDER BY clause allows you to: Sort a result set by a single column or multiple columns. Sort a result set by different columns in ascending or descending order. The following illustrates the syntax of the ORDER BY clause: SELECT column1, column2,... FROM tbl ORDER BY column1 [ASC|DESC], column2 [ASC| DESC],.....; Consider the CUSTOMAR table with attribute C_name, C_city, C_mobile_No. , CONTACT table with attribute first_name, middle_name, last_name, city & SUPPLIERS with attribute supplier_name,supplier_city, supplier_state 1.1 The MySQL ORDER BY clause can be used without specifying the ASC or DESC modifier. When this attribute is omitted from the ORDER BY clause, the sort order is defaulted to ASC or ascending order. For example: SELECT C_city FROM CUSTOMERS WHERE C_name = 'Apple' ORDER BY C_city; 1.2 This MySQL ORDER BY example would return all records sorted by the city field in ascending order and would be equivalent to the following ORDER BY clause: SELECT C_city FROM CUSTOMERS WHERE C_name = 'Apple' ORDER BY C_city ASC; 1.3 You can also use the MySQL ORDER BY clause to sort by relative position in the result set, where the first field in the result set is 1. The next field is 2, and so on. For example: SELECT last_name, first_name, city FROM CONTACT WHERE last_name = 'Johnson' ORDER BY 4 DESC; This MySQL ORDER BY would return all records sorted by the city field in descending order, since the city field is in position #4 in the result set and would be equivalent to the following ORDER BY clause: SELECT last_name, first_name, city FROM CONTACT WHERE last_name = 'Johnson' ORDER Name of Student: Submission Date: Enrollment No.: Experiment Date: BY city DESC; 1.4. When sorting your result set using the MySQL ORDER BY clause, you can use the ASC and DESC attributes in a single SELECT statement. For example: SELECT supplier_city, supplier_state FROM suppliers WHERE supplier_name = 'Microsoft' ORDER BY supplier_city DESC, supplier_state ASC; This MySQL ORDER BY would return all records sorted by the supplier_city field in descending order, with a secondary sort by supplier_state in ascending order. 2. Group By Clause The MySQL GROUP BY clause is used in a SELECT statement to collect data across multiple records and group the results by one or more columns.The syntax for the GROUP BY clause in MySQL is: SELECT expression1, expression2, ... expression_n, aggregate_function (expression) FROM tables [WHERE conditions] GROUP BY expression1, expression2, ... expression_n; Parameters expression1, expression2, ... expression_n The expressions that are not encapsulated within an aggregate function and must be included in the GROUP BY clause. aggregate_function A function such as SUM, COUNT, MIN, MAX, or AVG functions. tables The tables that you wish to retrieve records from. There must be at least one table listed in the FROM clause. WHERE conditions Optional. The conditions that must be met for the records to be selected. Consider the order_details table with attributes product, quantity, category & employees table with attribute department, salary 2.1 This MySQL GROUP BY example uses the SUM function to return the name of the product and the total quantity (for the product). SELECT product, SUM(quantity) AS "Total quantity" FROM order_details GROUP BY product; Because you have listed one column (the product field) in your SELECT statement that is not Name of Student: Submission Date: Enrollment No.: Experiment Date: encapsulated in the SUM function, you must use the GROUP BY Clause. The product field must, therefore, be listed in the GROUP BY clause. 2.2 This GROUP BY example uses the COUNT function to return the product and the number of orders (for that product) that are in the produce category. SELECT product, COUNT(*) AS "Number of orders" FROM order_details WHERE category = 'produce' GROUP BY product; 2.3 This GROUP BY example uses the MIN function to return the name of each department and the minimum salary in the department. SELECT department, MIN(salary) AS "Lowest salary" FROM employees GROUP BY department; 2.4 This GROUP BY example uses the MAX function to return the name of each department and the maximum salary in the department. SELECT department, MAX(salary) AS "Highest salary" FROM employees GROUP BY department; 3. Having Clause The MySQL HAVING clause is used in combination with the GROUP BY clause to restrict the groups of returned rows to only those whose the condition is TRUE.The syntax for the HAVING Clause in MySQL is: SELECT expression1, expression2, ... expression_n, aggregate_function (expression) FROM tables [WHERE conditions] GROUP BY expression1, expression2, ... expression_n HAVING condition; Parameters aggregate_function A function such as SUM, COUNT, MIN, MAX, or AVG functions. expression1, expression2, ... expression_n The expressions that are not encapsulated within an aggregate function and must be included in the GROUP BY clause. WHERE conditions Optional. These are the conditions for the records to be selected. HAVING condition This is a further condition applied only to the aggregated results to restrict the groups of returned rows. Only those groups whose condition evaluates to TRUE will be included in the Name of Student: Submission Date: Enrollment No.: Experiment Date: result set. Consider the order_details table with attributes product, quantity, category & employees table with attribute department, salary 3.1 You could also use the SUM function to return the name of the product and the total quantity (for that product). The MySQL HAVING clause will filter the results so that only products with a total quantity greater than 10 will be returned. SELECT product, SUM(quantity) AS "Total quantity"FROM order_details GROUP BY product HAVING SUM(quantity) > 10; 3.2 You could use the COUNT function to return the name of the product and the number of orders (for that product) that are in the 'produce' category. The MySQL HAVING clause will filter the results so that only products with more than 20 orders will be returned. SELECT product, COUNT(*) AS "Number of orders" FROM order_details WHERE category = 'produce' GROUP BY product HAVING COUNT(*) > 20; 3.3 You could also use the MIN function to return the name of each department and the minimum salary in the department. The MySQL HAVING clause will return only those departments where the minimum salary is less than $50,000. SELECT department, MIN(salary) AS "Lowest salary" FROM employees GROUP BY department HAVING MIN(salary) < 50000; 3.4 you could also use the MAX function to return the name of each department and the maximum salary in the department. The MySQL HAVING clause will return only those departments whose maximum salary is greater than $25,000. SELECT department, MAX(salary) AS "Highest salary" FROM employees GROUP BY department HAVING MAX(salary) > 25000; Name of Student: Submission Date: