Group by and table join : GROUP BY « Query « SQL Server / T-SQL Tutorial






4>
5>
6> create table Billings (
7>     BankerID           INTEGER,
8>     BillingNumber      INTEGER,
9>     BillingDate        datetime,
10>     BillingTotal       INTEGER,
11>     TermsID            INTEGER,
12>     BillingDueDate     datetime ,
13>     PaymentTotal       INTEGER,
14>     CreditTotal        INTEGER
15>
16> );
17> GO
1>
2> INSERT INTO Billings VALUES (1, 1, '2005-01-22', 165, 1,'2005-04-22',123,321);
3> GO

(1 rows affected)
1> INSERT INTO Billings VALUES (2, 2, '2001-02-21', 165, 1,'2002-02-22',123,321);
2> GO

(1 rows affected)
1> INSERT INTO Billings VALUES (3, 3, '2003-05-02', 165, 1,'2005-04-12',123,321);
2> GO

(1 rows affected)
1> INSERT INTO Billings VALUES (4, 4, '1999-03-12', 165, 1,'2005-04-18',123,321);
2> GO

(1 rows affected)
1> INSERT INTO Billings VALUES (5, 5, '2000-04-23', 165, 1,'2005-04-17',123,321);
2> GO

(1 rows affected)
1> INSERT INTO Billings VALUES (6, 6, '2001-06-14', 165, 1,'2005-04-18',123,321);
2> GO

(1 rows affected)
1> INSERT INTO Billings VALUES (7, 7, '2002-07-15', 165, 1,'2005-04-19',123,321);
2> GO

(1 rows affected)
1> INSERT INTO Billings VALUES (8, 8, '2003-08-16', 165, 1,'2005-04-20',123,321);
2> GO

(1 rows affected)
1> INSERT INTO Billings VALUES (9, 9, '2004-09-17', 165, 1,'2005-04-21',123,321);
2> GO

(1 rows affected)
1> INSERT INTO Billings VALUES (0, 0, '2005-10-18', 165, 1,'2005-04-22',123,321);
2> GO

(1 rows affected)
1>
2>
3>
4> create table Bankers(
5>    BankerID             Integer,
6>    BankerName           VARCHAR(20),
7>    BankerContactLName   VARCHAR(20),
8>    BankerContactFName   VARCHAR(20),
9>    BankerCity           VARCHAR(20),
10>    BankerState          VARCHAR(20),
11>    BankerZipCode        VARCHAR(20),
12>    BankerPhone          VARCHAR(20)
13> )
14> GO
1>
2> insert into Bankers values (1, 'ABC Inc.','Joe','Smith','Vancouver','BC','11111','111-111-1111');
3> GO

(1 rows affected)
1> insert into Bankers values (2, 'DEF Inc.','Red','Rice', 'New York', 'DE','22222','222-222-2222');
2> GO

(1 rows affected)
1> insert into Bankers values (3, 'HJI Inc.','Kit','Cat',  'Paris',    'CA','33333','333-333-3333');
2> GO

(1 rows affected)
1> insert into Bankers values (4, 'QWE Inc.','Git','Black','Regina',   'ER','44444','444-444-4444');
2> GO

(1 rows affected)
1> insert into Bankers values (5, 'RTY Inc.','Wil','Lee',  'Toronto',  'YU','55555','555-555-5555');
2> GO

(1 rows affected)
1> insert into Bankers values (6, 'YUI Inc.','Ted','Larry','Calgary',  'TY','66666','666-666-6666');
2> GO

(1 rows affected)
1> insert into Bankers values (7, 'OIP Inc.','Yam','Act',  'San Franc','FG','77777','777-777-7777');
2> GO

(1 rows affected)
1> insert into Bankers values (8, 'SAD Inc.','Hit','Eat',  'Orland',   'PO','88888','888-888-8888');
2> GO

(1 rows affected)
1> insert into Bankers values (9, 'DFG Inc.','Sad','Lee',  'Wisler',   'PL','99999','999-999-9999');
2> GO

(1 rows affected)
1> insert into Bankers values (0, 'GHJ Inc.','Bit','Lee',  'Ticker',   'MN','00000','000-000-0000');
2> GO

(1 rows affected)
1>
2> SELECT BankerState, BankerCity, COUNT(*) AS BillingQty,
3>     AVG(BillingTotal) AS BillingAvg
4> FROM Billings JOIN Bankers
5>     ON Billings.BankerID = Bankers.BankerID
6> GROUP BY BankerState, BankerCity
7> ORDER BY BankerState, BankerCity
8> GO
BankerState          BankerCity           BillingQty  BillingAvg
-------------------- -------------------- ----------- -----------
BC                   Vancouver                      1         165
CA                   Paris                          1         165
DE                   New York                       1         165
ER                   Regina                         1         165
FG                   San Franc                      1         165
MN                   Ticker                         1         165
PL                   Wisler                         1         165
PO                   Orland                         1         165
TY                   Calgary                        1         165
YU                   Toronto                        1         165

(10 rows affected)
1>
2> drop table Billings;
3> drop table Bankers;
4> GO
1>








1.4.GROUP BY
1.4.1.A summary query that counts the number of Billings by Banker
1.4.2.Group by and table join
1.4.3.A summary query with a search condition in the WHERE clause
1.4.4.Extracting partial records using GROUP BY.
1.4.5.GROUP BY with SUM()
1.4.6.both the EmployeeID and CustomerID columns in our GROUP BY
1.4.7.A count for each grouping rather than the full table
1.4.8.Using GROUP BY ALL