Basisdata Pertanian
After completing this lesson, you should be able to do the following Identify the available group functions Describe the use of group functions Group data by using the GROUP BY clause Include or exclude grouped rows by using the HAVING clause
Group functions operate on sets of rows to give one result per group. EMPLOYEES Maximum salary in EMPLOYEES table
AVG COUNT MAX MIN STDDEV SUM VARIANCE
SELECT [column,] group_function (column),... FROM table [WHERE condition] [GROUP BY column] [ORDER BY column]; AVG (SALARY)MAX (SALARY)MIN (SALARY)SUM (SALARY)
You can use AVG and SUM for numeric data. SELECT AVG (salary), MAX (salary), MIN (salary), SUM (salary) FROM employees WHERE job_id LIKE '%REP%';
Using the MIN and MAX Functions You can use MIN and MAX for numeric, character, and date data types SELECT MIN (hire_date), MAX (hire_date) FROM employees; MIN (HIRE_MAX (HIRE_ 17-JUN-8729-JAN-00
COUNT(*) returns the number of rows in a table: SELECTCOUNT (*) FROM employees WHERE department_id = 50; SELECTCOUNT (commission_pct) FROM employees WHERE department_id = 80; 1 COUNT(expr) returns the number of rows with non-null values for the expr: 2 COUNT (*) 5 COUNT (commission_pct) 3
Using the DISTINCT Keyword COUNT(DISTINCT expr) returns the number of distinct non- null values of the expr. To display the number of distinct department values in the EMPLOYEES table: SELECT COUNT (DISTINCT department_id) FROM employees; COUNT (DISTINCT DEPARTMENT_ID) 7
Kelompok Fungsi dan Nilai Null Kelompok fungsi membiarkan nilai null dalam kolom: SELECT AVG(commission_pct) FROM employees; Fungsi NVL memaksa fungsi kelompok untuk memasukkan Nilai null : SELECT AVG(NVL(commission_pct, 0)) FROM employees; COUNT (DISTINCT DEPARTMENT_ID) COUNT (DISTINCT DEPARTMENT_ID)
EMPLOYEES DEPARTMENT-IDSALARY … 20 baris terpilih DEPARTMENT-IDAVG (SALARY) Average salary in EMPLOYEES table for each department
SELECT column, group_function(column) FROM table [WHERE condition] [GROUP BY group_by_expression] [ORDER BY column]; Anda dapat membagi baris sebuah tabel menjadi kelompok- kelompok yang lebih kecil dengan menggunakan klausa GROUP BY
Semua kolom dalam daftar SELECT yang bukan fungsi kelompok harus dalam klausa GROUP BY. SELECT department_id, AVG(salary) FROM employees GROUP BY department_id ;
GROUP BY kolom tidak harus dalam daftar SELECT. SELECT AVG(salary) FROM employees GROUP BY department_id ; AVG(SALARY)
EMPLOYEES Tambahkan gaji dalam tabel EMPLOYEES untuk setiap pekerjaan, dikelompokkan berdasarkan department
SELECT department_id dept_id, job_id, SUM(salary) FROM employees GROUP BY department_id, job_id ;
Setiap kolom atau ekspresi dalam daftar SELECT yang bukan merupakan fungsi agregat harus dalam klausa GROUP BY: SELECT department_id, COUNT(last_name) FROM employees; SELECT department_id, COUNT(last_name) * ERROR at line 1: ORA-00937: not a single-group group function Column missing in the GROUP BY clause
You cannot use the WHERE clause to restrict groups. You use the HAVING clause to restrict groups. You cannot use group functions in the WHERE clause. SELECT department_id, AVG(salary) FROM employees WHERE AVG(salary) > 8000 GROUP BY department_id; WHERE AVG(salary) > 8000 * ERROR at line 3: ORA-00934: group function is not allowed here Cannot use the WHERE clause to restrict groups
EMPLOYEES … Gaji maksimum per departemen saat itu lebih besar dari $ $10.000
Bila Anda menggunakan klausa HAVING, server Oracle membatasi kelompok sebagai berikut: 1. Baris akan dikelompokkan. 2. Fungsi Kelompok diterapkan. 3. Kelompok yang cocok dengan klausa HAVING ditampilkan. SELECT column, group_function FROM table [WHERE condition] [GROUP BY group_by_expression] [HAVING group_condition] [ORDER BY column];
SELECT department_id, MAX(salary) FROM employees GROUP BY department_id HAVING MAX(salary)>10000 ;
SELECT job_id, SUM(salary) PAYROLL FROM employees WHERE job_id NOT LIKE '%REP%' GROUP BY job_id HAVING SUM(salary) > ORDER BY SUM(salary);
Display the maximum average salary: SELECT MAX(AVG(salary)) FROM employees GROUP BY department_id;
Display the maximum average salary: SELECT MAX(AVG(salary)) FROM employees GROUP BY department_id;
In this lesson, you should have learned how to: Use the group functions COUNT, MAX, MIN, and AVG Write queries that use the GROUP BY clause Write queries that use the HAVING clause SELECT column, group_function FROM table [WHERE condition] [GROUP BY group_by_expression] [HAVING group_condition] [ORDER BY column];