, COUNT , , , , 6.4:
SELECT COUNT (*)
FROM Customers
=============== SQL Execution Log ============
| SELECT COUNT (*) |
| FROM Customers; |
| ==============================================|
| |
| ------- |
| 7 |
===============================================
6.4.
COUNT NULL, , DISTINCT. DISTINCT , COUNT , , NULL . DISTINCT COUNT (*), , . , , , ( , ). , , - , , , COUNT .
( ) ALL, , DISTINCT, . ANSI COUNT, .
ALL * COUNT:
ALL .
ALL NULL.
* , NULL , COUNT; COUNT NULL . (COUNT) NULL rating ( ):
SELECT COUNT (ALL rating)
FROM Customers;
,
, . , , . ( , DISTINCT .) , , ( blnc) . , . :
SELECT MAX (blnc + amt)
FROM Orders;
blnc amt , . , , . , . , , .
|
|
, SQL, , 7.
GROUP BY
GROUP BY , . SELECT. , , . , MAX (amt) snum. GROUP BY, , :
SELECT snum, MAX (amt)
FROM Orders
GROUP BY snum;
6.5.
=============== SQL Execution Log ==============
| SELECT snum, MAX (amt) |
| FROM Orders |
| GROUP BY snum; |
| =============================================== |
| snum |
| ------ -------- |
| 1001 767.19 |
| 1002 1713.23 |
| 1003 75.75 |
| 1014 1309.95 |
| 1007 1098.16 |
=================================================
6.5. .
GROUP BY , . , snum, MAX . , GROUP BY, , , , . , . GROUP BY . , , . , , MAX , :
SELECT snum, odate, MAX (amt)
FROM Orders
GROUP BY snum, odate;
6.6.
=============== SQL Execution Log ==============
| SELECT snum, odate, MAX (amt) |
| FROM Orders |
| GROUP BY snum, odate; |
| =============================================== |
| snum odate |
| ------ ---------- -------- |
| 1001 10/03/1990 767.19 |
| 1001 10/05/1990 4723.00 |
| 1001 10/06/1990 9891.88 |
| 1002 10/03/1990 5160.45 |
| 1002 10/04/1990 75.75 |
| 1002 10/06/1990 1309.95 |
| 1003 10/04/1990 1713.23 |
| 1014 10/03/1990 1900.10 |
| 1007 10/03/1990 1098.16 |
=================================================
6.6.
, , , , .
HAVING
, , , $3000.00. WHERE ( , ), , . , - :
|
|
SELECT snum, odate, MAX (amt)
FROM Oreders
WHERE MAX (amt) > 3000.00
GROUP BY snum, odate;
ANSI. $3000.00, HAVING. HAVING , , WHERE . :
SELECT snum, odate, MAX (amt)
FROM Orders
GROUP BY snum, odate
HAVING MAX (amt) > 3000.00;
6.7.
=============== SQL Execution Log ==============
| SELECT snum, odate, MAX (amt) |
| FROM Orders |
| GROUP BY snum, odate |
| HAVING MAX (amt) > 3000.00; |
| =============================================== |
| snum odate |
| ------ ---------- -------- |
| 1001 10/05/1990 4723.00 |
| 1001 10/06/1990 9891.88 |
| 1002 10/03/1990 5160.45 |
=================================================
6.7.
HAVING , SELECT, GROUP BY. . :
SELECT snum, MAX (amt)
FROM Orders
GROUP BY snum
HAVING odate = 10/03/1988;
date HAVING, ( ) . , HAVING GROUP BY. :
SELECT snum, MAX (amt)
FROM Orders
WHERE odate = 10/03/1990
GROUP BY snum;
// Interbase:
WHERE odate = CAST('10/03/1988' AS DATE)
6.8.
=============== SQL Execution Log ==============
| SELECT snum, odate, MAX (amt) |
| FROM Orders |
| GROUP BY snum, odate; |
| =============================================== |
| snum |
| ------ -------- |
| 1001 767.19 |
| 1002 5160.45 |
| 1014 1900.10 |
| 1007 1098.16 |
=================================================
6.8: 3 .
odate , , , . , , - , : " 3 ". 7, , .
, HAVING , . , , GROUP BY . , Serres Rifkin:
SELECT snum, MAX (amt)
FROM Orders
GROUP BY snum
HAVING snum IN (1002,1007);
6.9.
=============== SQL Execution Log ==============
| SELECT snum, MAX (amt) |
| FROM Orders |
| GROUP BY snum |
| HAVING snum IN (1002, 1007); |
| =============================================== |
| snum |
| ------ -------- |
| 1002 5160.45 |
| 1007 1098.16 |
=================================================
6.9. HAVING GROUP BY.