SELECT predicate WHERE and GROUP BY
1. Total Orders per Customer
SQL Server Query 1
SELECT TOP 30
C.CompanyName,
COUNT(O.OrderID) AS TotalOrders
FROM
Customers AS C
JOIN
Orders AS O ON C.CustomerID = O.CustomerID
GROUP BY
C.CompanyName
ORDER BY
TotalOrders DESC;
Create SQL query with SqlQueryBuilder 1
var (sql1, parameters1) = new SqlQueryBuilder()
.Select().Top(30)
.Column("c.CompanyName")
.Column(new COUNT(new Column("O.OrderID")), "TotalOrders")
.From("Customers","C")
.Join(new List<IJoin>()
{
new INNERJOIN().TableName("Orders", "O")
.On(new Column("C.CustomerID").Equale(new Column("O.CustomerID")))
})
.GroupBy(new GroupBy("C.CompanyName"))
.OrderBy(new OrderBy().SetColumnDescending("TotalOrders"))
.Build();
Query build by SqlQueryBuilder 1
SELECT TOP 30 c.CompanyName,
COUNT(O.OrderID) AS TotalOrders
FROM Customers AS C
INNER JOIN
Orders AS O
ON C.CustomerID = O.CustomerID
GROUP BY C.CompanyName
ORDER BY TotalOrders DESC;
Parameters (If used)
Query Results 1:
|
CompanyName |
TotalOrders |
1 |
Save-a-lot Markets
|
31
|
2 |
Ernst Handel
|
30
|
3 |
QUICK-Stop
|
28
|
4 |
Folk och fä HB
|
19
|
5 |
Hungry Owl All-Night Grocers
|
19
|
6 |
Berglunds snabbköp
|
18
|
7 |
HILARION-Abastos
|
18
|
8 |
Rattlesnake Canyon Grocery
|
18
|
9 |
Bon app'
|
17
|
10 |
Frankenversand
|
15
|
11 |
Lehmanns Marktstand
|
15
|
12 |
Wartian Herkku
|
15
|
13 |
Bottom-Dollar Markets
|
14
|
14 |
Hanari Carnes
|
14
|
15 |
Königlich Essen
|
14
|
16 |
La maison d'Asie
|
14
|
17 |
LILA-Supermercado
|
14
|
18 |
White Clover Markets
|
14
|
19 |
Around the Horn
|
13
|
20 |
Mère Paillarde
|
13
|
21 |
Queen Cozinha
|
13
|
22 |
LINO-Delicateses
|
12
|
23 |
Reggiani Caseifici
|
12
|
24 |
Suprêmes délices
|
12
|
25 |
Blondesddsl père et fils
|
11
|
26 |
Great Lakes Food Market
|
11
|
27 |
Ricardo Adocicados
|
11
|
28 |
Vaffeljernet
|
11
|
29 |
B's Beverages
|
10
|
30 |
Die Wandernde Kuh
|
10
|
2. Total Sales Value per Employee per Year
SQL Server Query 2
SELECT
E.FirstName + ' ' + E.LastName AS EmployeeName,
YEAR(O.OrderDate) AS OrderYear,
SUM(OD.Quantity * OD.UnitPrice * (1 - OD.Discount)) AS TotalSalesValue
FROM
Employees AS E
JOIN
Orders AS O ON E.EmployeeID = O.EmployeeID
JOIN
[Order Details] AS OD ON O.OrderID = OD.OrderID
GROUP BY
E.FirstName,
E.LastName,
YEAR(O.OrderDate)
ORDER BY
EmployeeName,
OrderYear;
Create SQL query with SqlQueryBuilder 2
var (sql2, parameters2) = new SqlQueryBuilder()
.Select()
.Column(new CONCAT(new Column("E.FirstName"), " ", new Column("E.LastName")), "EmployeeName")
.Column(new YEAR(new Column("O.OrderDate")), "OrderYear")
.Column(new SUM(new ColumnArithmatic("OD.Quantity").MULTIPLY(new Column("OD.UnitPrice"))
.MULTIPLY().StartBracket(1).SUBTRACT(new Column("OD.Discount")).EndBracket()), "TotalSalesValue")
.From("Employees", "E")
.Join(new List<IJoin>()
{
new INNERJOIN().TableName("Orders", "O")
.On(new Column("E.EmployeeID").Equale(new Column("O.EmployeeID"))),
new INNERJOIN().TableName("[Order Details]", "OD")
.On(new Column("O.OrderID").Equale(new Column("OD.OrderID")))
})
.GroupBy(new GroupBy(new Column("E.FirstName"), new Column("E.LastName"),
new YEAR(new Column("O.OrderDate"))))
.OrderBy(new OrderBy().SetColumnAscending("EmployeeName")
.SetColumnAscending("OrderYear"))
.Build();
Query build by SqlQueryBuilder 2
SELECT CONCAT(E.FirstName, @pMAIN_2507192055432924290, E.LastName) AS EmployeeName,
YEAR(O.OrderDate) AS OrderYear,
SUM(OD.Quantity * OD.UnitPrice * (@pMAIN_2507192055432924291 - OD.Discount)) AS TotalSalesValue
FROM Employees AS E
INNER JOIN
Orders AS O
ON E.EmployeeID = O.EmployeeID
INNER JOIN
[Order Details] AS OD
ON O.OrderID = OD.OrderID
GROUP BY E.FirstName, E.LastName, YEAR(O.OrderDate)
ORDER BY EmployeeName ASC, OrderYear ASC;
Parameters (If used)
Name |
Value |
@pMAIN_2507192055432924290 |
|
@pMAIN_2507192055432924291 |
1 |
Query Results 2:
|
EmployeeName |
OrderYear |
TotalSalesValue |
1 |
Andrew Fuller
|
1996
|
21757.0598373413
|
2 |
Andrew Fuller
|
1997
|
70444.1401109696
|
3 |
Andrew Fuller
|
1998
|
74336.5550298691
|
4 |
Anne Dodsworth
|
1996
|
9894.51510620117
|
5 |
Anne Dodsworth
|
1997
|
26310.3926029205
|
6 |
Anne Dodsworth
|
1998
|
41103.1590003967
|
7 |
Janet Leverling
|
1996
|
18223.9599437714
|
8 |
Janet Leverling
|
1997
|
108026.155358315
|
9 |
Janet Leverling
|
1998
|
76562.7274913788
|
10 |
Laura Callahan
|
1996
|
22240.119972229
|
11 |
Laura Callahan
|
1997
|
56032.6150627136
|
12 |
Laura Callahan
|
1998
|
48589.5426692963
|
13 |
Margaret Peacock
|
1996
|
49945.1149682999
|
14 |
Margaret Peacock
|
1997
|
128809.791022301
|
15 |
Margaret Peacock
|
1998
|
54135.939956665
|
16 |
Michael Suyama
|
1996
|
16642.6048812866
|
17 |
Michael Suyama
|
1997
|
43126.3693714142
|
18 |
Michael Suyama
|
1998
|
14144.1549911499
|
19 |
Nancy Davolio
|
1996
|
35764.5149040222
|
20 |
Nancy Davolio
|
1997
|
93148.077507019
|
21 |
Nancy Davolio
|
1998
|
63195.0119094849
|
22 |
Robert King
|
1996
|
15232.160068512
|
23 |
Robert King
|
1997
|
60471.1956977844
|
24 |
Robert King
|
1998
|
48864.8796157837
|
25 |
Steven Buchanan
|
1996
|
18383.9199714661
|
26 |
Steven Buchanan
|
1997
|
30716.4676322937
|
27 |
Steven Buchanan
|
1998
|
19691.8949356079
|
3. Calculate the total sales value for each month of every year.
SQL Server Query 3
SELECT
YEAR(O.OrderDate) AS OrderYear,
MONTH(O.OrderDate) AS OrderMonth,
SUM(OD.Quantity * OD.UnitPrice * (1 - OD.Discount)) AS TotalSalesValue
FROM
Orders AS O
JOIN
[Order Details] AS OD ON O.OrderID = OD.OrderID
GROUP BY
YEAR(O.OrderDate), -- Function used directly in GROUP BY
MONTH(O.OrderDate) -- Function used directly in GROUP BY
ORDER BY
OrderYear,
OrderMonth;
Create SQL query with SqlQueryBuilder 3
var (sql3, parameters3) = new SqlQueryBuilder()
.Select()
.Column(new YEAR(new Column("O.OrderDate")), "OrderYear")
.Column(new MONTH(new Column("O.OrderDate")), "OrderMonth")
.Column(new SUM(new ColumnArithmatic("OD.Quantity").MULTIPLY("OD.UnitPrice")
.MULTIPLY().StartBracket(1).SUBTRACT("OD.Discount").EndBracket()), "TotalSalesValue")
.From("Orders", "O")
.Join(new List<IJoin>()
{
new INNERJOIN().TableName("[Order Details]","OD")
.On(new Column("O.OrderID").Equale(new Column("OD.OrderID")))
})
.GroupBy(new GroupBy(new YEAR(new Column("O.OrderDate")), new MONTH(new Column("O.OrderDate"))))
.OrderBy(new OrderBy()
.SetColumnAscending("OrderYear")
.SetColumnAscending("OrderMonth"))
.Build();
Query build by SqlQueryBuilder 3
SELECT YEAR(O.OrderDate) AS OrderYear,
MONTH(O.OrderDate) AS OrderMonth,
SUM(OD.Quantity * OD.UnitPrice * (@pMAIN_2507192055433121950 - OD.Discount)) AS TotalSalesValue
FROM Orders AS O
INNER JOIN
[Order Details] AS OD
ON O.OrderID = OD.OrderID
GROUP BY YEAR(O.OrderDate), MONTH(O.OrderDate)
ORDER BY OrderYear ASC, OrderMonth ASC;
Parameters (If used)
Name |
Value |
@pMAIN_2507192055433121950 |
1 |
Query Results 3:
|
OrderYear |
OrderMonth |
TotalSalesValue |
1 |
1996
|
7
|
27861.8949737549
|
2 |
1996
|
8
|
25485.2749700546
|
3 |
1996
|
9
|
26381.3999729156
|
4 |
1996
|
10
|
37515.7251968384
|
5 |
1996
|
11
|
45600.0448436737
|
6 |
1996
|
12
|
45239.6296958923
|
7 |
1997
|
1
|
61258.0704631805
|
8 |
1997
|
2
|
38483.6349811554
|
9 |
1997
|
3
|
38547.2199964523
|
10 |
1997
|
4
|
53032.9525184631
|
11 |
1997
|
5
|
53781.2900390625
|
12 |
1997
|
6
|
36362.802532196
|
13 |
1997
|
7
|
51020.8575267792
|
14 |
1997
|
8
|
47287.6703300476
|
15 |
1997
|
9
|
55629.2424850464
|
16 |
1997
|
10
|
66749.2258796692
|
17 |
1997
|
11
|
43533.809015274
|
18 |
1997
|
12
|
71398.4285984039
|
19 |
1998
|
1
|
94222.1105527878
|
20 |
1998
|
2
|
99415.2873382568
|
21 |
1998
|
3
|
104854.155029297
|
22 |
1998
|
4
|
123798.682136536
|
23 |
1998
|
5
|
18333.6305427551
|