See the Exhibit and examine the structure of the CUSTOMERS table:
Using the CUSTOMERS table, you need to generate a report that shown the average credit limit
for customers in WASHINGTON and NEW YORK.
Which SQL statement would produce the required result?
A.
SELECT cust_city, AVG(cust_credit_limit)
FROM customers
WHERE cust_city IN (‘WASHINGTON’,’NEW YORK’)
GROUP BY cust_credit_limit, cust_city;
B.
SELECT cust_city, AVG(cust_credit_limit)
FROM customers
WHERE cust_city IN (‘WASHINGTON’,’NEW YORK’)
GROUP BY cust_city,cust_credit_limit;
C.
SELECT cust_city, AVG(cust_credit_limit)
FROM customers
WHERE cust_city IN (‘WASHINGTON’,’NEW YORK’)
GROUP BY cust_city;
D.
SELECT cust_city, AVG(NVL(cust_credit_limit,0))
FROM customers
WHERE cust_city IN (‘WASHINGTON’,’NEW YORK’);
Explanation:
Creating Groups of Data: GROUP BY Clause Syntax
You can use the GROUP BY clause to divide the rows in a table into groups. You can then use the
group functions to return summary information for each group.In the syntax:
group_by_expression Specifies the columns whose values determine the basis for grouping rows
Guidelines
If you include a group function in a SELECT clause, you cannot select individual results as well,
unless the individual column appears in the GROUP BY clause. You receive an error message if
you fail to include the column list in the GROUP BY clause.
Using a WHERE clause, you can exclude rows before dividing them into groups.
You must include the columns in the GROUP BY clause.
You cannot use a column alias in the GROUP BY clause.
C is Correct. The rest have problems with the missing or incorrect Group by clauses.
why B is incorrect ? it will still return the same result as group by cust_city
Because the result will not be the average.
CORRECT
1 SELECT job_id, avg(salary)
2 FROM employees
3 WHERE job_id IN (‘IT_PROG’,’AD_PRES’)
4* GROUP BY job_id
SQL> /
JOB_ID AVG(SALARY)
———- ———–
AD_PRES 24000
IT_PROG 5550
INCORRECT
1 SELECT job_id, avg(salary)
2 FROM employees
3 WHERE job_id IN (‘IT_PROG’,’AD_PRES’)
4* GROUP BY job_id,salary
SQL> /
JOB_ID AVG(SALARY)
———- ———–
IT_PROG 6000
IT_PROG
IT_PROG 9000
IT_PROG 4200
AD_PRES 24000
IT_PROG 3000
Sory..silly i got the answer 🙂