SQL supports count, sum, avg, max, min functions.
(1) Get total dollar amounts of all orders.
SQL> select sum(dollars)
from orders;
SUM(DOLLARS)
------------
9802
(2) Get total quantity of product "p03" that has been ordered.
SQL> select sum(qty) TOTAL
from orders
where pid = 'p03';
TOTAL
----------
2400
(3) Get total number of customers.
SQL> select count(cid)
from customers;
COUNT(CID)
----------
5
Alternate solution:
SQL> select count(*)
from customers;
COUNT(*)
----------
5
(4) Get number of cities in which customers are based.
SQL> select count(distinct city)
from customers;
COUNT(DISTINCTCITY)
-------------------
3
If distinct keyword was not used, we would get an
incorrect result:
SQL> select count(city)
from customers;
COUNT(CITY)
-----------
5
(5) Get cid values of customers who have a discount less than
the maximum discount.
SQL> select cid
from customers
where discnt < (select max(discnt)
from customers);
CID
----
c001
c003
c004
c006
(6) Get pids of products ordered by at least two customers.
SQL> select p.pid
from products p
where 2 <= (select count(distinct cid)
from orders
where pid = p.pid);
PID
---
p01
p03
p05
p07
(7) Null Values and Aggregate Operations:
SQL> insert into customers (cid, cname, city)
values ('c007', 'Windix', 'Dallas');
1 row created.
SQL> select *
from customers
where discnt <= 10 or discnt > 10;
CID CNAME CITY DISCNT
---- ------------- -------------------- ----------
c001 Tiptop Duluth 10
c002 Basics Dallas 12
c003 Allied Dallas 8
c004 ACME Duluth 8
c006 ACME Kyoto 0
Newly created row not in result!
SQL> select *
from customers
where discnt is null;
CID CNAME CITY DISCNT
---- ------------- -------------------- ----------
c007 Windix Dallas
Newly created row is in result.
All aggregate functions discard null values before evaluation.
Get average discount value for customers.
SQL> select avg(discnt)
from customers;
AVG(DISCNT)
-----------
7.6
This discarded the null value before calculating average.