SUM SQL function
1. Usage of SUM to format the total order amount
SQL Server Query 1
SELECT TOP 10
o.OrderID,
c.CompanyName,
'Total: $' +
CASE
WHEN SUM(od.UnitPrice * od.Quantity * (1 - od.Discount)) > 1000
THEN '**' + STR(SUM(od.UnitPrice * od.Quantity * (1 - od.Discount)), 10, 2)
ELSE STR(SUM(od.UnitPrice * od.Quantity * (1 - od.Discount)), 10, 2)
END AS FormattedTotalAmount
FROM
Orders o
JOIN
Customers c ON o.CustomerID = c.CustomerID
JOIN
[Order Details] od ON o.OrderID = od.OrderID
GROUP BY
o.OrderID,
c.CompanyName
ORDER BY
o.OrderID;
Create SQL query with SqlQueryBuilder 1
var (sql1, parameters1) = new SqlQueryBuilder()
.Select().Top(10)
.Columns("o.OrderID", "c.CompanyName")
.Column(new CONCAT(
"Total: $",
new CASE()
.When(new SUM(new ColumnArithmatic("od.UnitPrice").MULTIPLY("od.Quantity").MULTIPLY()
.StartBracket(1).SUBTRACT("od.Discount").EndBracket()).GreaterThan(100))
.Then(new CONCAT("**", new STR(new SUM(
new ColumnArithmatic("od.UnitPrice").MULTIPLY("od.Quantity").MULTIPLY()
.StartBracket(1).SUBTRACT("od.Discount").EndBracket()
), 10, 2)))
.Else(new STR(
new SUM(new ColumnArithmatic("od.UnitPrice").MULTIPLY("od.Quantity").MULTIPLY()
.StartBracket(1).SUBTRACT("od.Discount").EndBracket()), 10, 2))
), "FormattedTotalAmount")
.From("Orders", "o")
.Join(new List<IJoin>()
{
new INNERJOIN().TableName(new Table("Customers","c"))
.On(new Column("o.CustomerID").Equale(new Column("c.CustomerID"))),
new INNERJOIN().TableName(new Table("[Order Details]", "od"))
.On(new Column("o.OrderID").Equale(new Column("od.OrderID")))
})
.GroupBy(new GroupBy("o.OrderID", "c.CompanyName"))
.OrderBy(new OrderBy().SetColumnAscending("o.OrderID"))
.Build();
Query build by SqlQueryBuilder 1
SELECT TOP 10 o.OrderID,
c.CompanyName,
CONCAT(@pMAIN_2507200147313026240, CASE WHEN SUM(od.UnitPrice * od.Quantity * (@pMAIN_2507200147313026241 - od.Discount)) > @pMAIN_2507200147313026242 THEN CONCAT(@pMAIN_2507200147313026243, STR(SUM(od.UnitPrice * od.Quantity * (@pMAIN_2507200147313026244 - od.Discount)), @pMAIN_2507200147313026245, @pMAIN_2507200147313026246)) ELSE STR(SUM(od.UnitPrice * od.Quantity * (@pMAIN_2507200147313026247 - od.Discount)), @pMAIN_2507200147313026248, @pMAIN_2507200147313026249) END) AS FormattedTotalAmount
FROM Orders AS o
INNER JOIN
Customers AS c
ON o.CustomerID = c.CustomerID
INNER JOIN
[Order Details] AS od
ON o.OrderID = od.OrderID
GROUP BY o.OrderID, c.CompanyName
ORDER BY o.OrderID ASC;
Parameters (If used)
Name |
Value |
@pMAIN_2507200147313026240 |
Total: $ |
@pMAIN_2507200147313026241 |
1 |
@pMAIN_2507200147313026242 |
100 |
@pMAIN_2507200147313026243 |
** |
@pMAIN_2507200147313026244 |
1 |
@pMAIN_2507200147313026245 |
10 |
@pMAIN_2507200147313026246 |
2 |
@pMAIN_2507200147313026247 |
1 |
@pMAIN_2507200147313026248 |
10 |
@pMAIN_2507200147313026249 |
2 |
Query Results 1:
|
OrderID |
CompanyName |
FormattedTotalAmount |
1 |
10248
|
Vins et alcools Chevalier
|
Total: $** 440.00
|
2 |
10249
|
Toms Spezialitäten
|
Total: $** 1863.40
|
3 |
10250
|
Hanari Carnes
|
Total: $** 1552.60
|
4 |
10251
|
Victuailles en stock
|
Total: $** 654.06
|
5 |
10252
|
Suprêmes délices
|
Total: $** 3597.90
|
6 |
10253
|
Hanari Carnes
|
Total: $** 1444.80
|
7 |
10254
|
Chop-suey Chinese
|
Total: $** 556.62
|
8 |
10255
|
Richter Supermarkt
|
Total: $** 2490.50
|
9 |
10256
|
Wellington Importadora
|
Total: $** 517.80
|
10 |
10257
|
HILARION-Abastos
|
Total: $** 1119.90
|
2. Usage of SUM to find sales trend angle
SQL Server Query 2
WITH MonthlyCategorySales AS (
SELECT
c.CategoryName,
DATEPART(month, o.OrderDate) AS SaleMonth,
SUM(od.Quantity * od.UnitPrice) AS MonthlySales
FROM Categories c
JOIN Products p ON c.CategoryID = p.CategoryID
JOIN [Order Details] od ON p.ProductID = od.ProductID
JOIN Orders o ON od.OrderID = o.OrderID
WHERE o.OrderDate BETWEEN '1996-01-01' AND '1996-12-31' -- Limit to one year for simplicity
GROUP BY c.CategoryName, DATEPART(month, o.OrderDate)
),
CategoryTotalSales AS (
SELECT
CategoryName,
SUM(MonthlySales) AS TotalSales
FROM MonthlyCategorySales
GROUP BY CategoryName
),
NormalizedSales AS (
SELECT
mcs.CategoryName,
mcs.SaleMonth,
-- Simplified normalization: (MonthlySales / TotalSales) * 2 -1. This isn't robust, but good for example
CAST(mcs.MonthlySales AS FLOAT) / cts.TotalSales AS NormalizedSales
FROM MonthlyCategorySales mcs
JOIN CategoryTotalSales cts ON mcs.CategoryName = cts.CategoryName
),
SalesTrendAngle AS (
SELECT
CategoryName,
-- Calculate ASIN of the normalized sales.
ASIN(AVG(NormalizedSales)) AS TrendAngleInRadians,
DEGREES(ASIN(AVG(NormalizedSales))) AS TrendAngleInDegrees
FROM NormalizedSales
GROUP BY CategoryName
)
SELECT
CategoryName,
TrendAngleInRadians,
TrendAngleInDegrees
FROM SalesTrendAngle
ORDER BY TrendAngleInDegrees;
Create SQL query with SqlQueryBuilder 2
var (sql2, parameters2) = new SqlQueryBuilder()
.WithCTETable(new Table("MonthlyCategorySales"), new SqlQueryBuilder()
.Select()
.Column("c.CategoryName", "CategoryName")
.Column(new DATEPART(SqlDateInterval.month, new Column("o.OrderDate")), "SaleMonth")
.Column(new SUM(new ColumnArithmatic("od.Quantity").MULTIPLY("od.UnitPrice")), "MonthlySales")
.From("Categories", "c")
.Join(new List<IJoin>()
{
new INNERJOIN().TableName(new Table("Products","p"))
.On(new Column("c.CategoryID").Equale(new Column("p.CategoryID"))),
new INNERJOIN().TableName(new Table("[Order Details]","od"))
.On(new Column("p.ProductID").Equale(new Column("od.ProductID"))),
new INNERJOIN().TableName(new Table("Orders","o"))
.On(new Column("od.OrderID").Equale(new Column("o.OrderID")))
})
.Where(new Where(new BETWEEN(new Column("o.OrderDate"), "1996-01-01", "1996-12-31")))
.GroupBy(new GroupBy(new Column("c.CategoryName"), new DATEPART(SqlDateInterval.month, new Column("o.OrderDate"))))
)
.WithCTETable(new Table("CategoryTotalSales"), new SqlQueryBuilder()
.Select()
.Column("CategoryName", "CategoryName")
.Column(new SUM(new Column("MonthlySales")), "TotalSales")
.From("MonthlyCategorySales")
.GroupBy(new GroupBy(new Column("CategoryName")))
)
.WithCTETable(new Table("NormalizedSales"), new SqlQueryBuilder()
.Select()
.Columns("mcs.CategoryName", "mcs.SaleMonth")
.Column(new ColumnArithmatic(new CAST(new Column("mcs.MonthlySales"), SqlDataType.FLOAT)).DIVIDE("cts.TotalSales"), "NormalizedSales")
.From("MonthlyCategorySales", "mcs")
.Join(new List<IJoin>()
{
new INNERJOIN().TableName(new Table("CategoryTotalSales","cts"))
.On(new Column("mcs.CategoryName").Equale(new Column("cts.CategoryName")))
})
)
.WithCTETable(new Table("SalesTrendAngle"), new SqlQueryBuilder()
.Select()
.Column("CategoryName", "CategoryName")
.Column(new ASIN(new AVG(new Column("NormalizedSales"))), "TrendAngleInRadians")
.Column(new DEGREES(new ASIN(new AVG(new Column("NormalizedSales")))), "TrendAngleInDegrees")
.From("NormalizedSales")
.GroupBy(new GroupBy("CategoryName"))
)
.Select()
.Columns("CategoryName", "TrendAngleInRadians", "TrendAngleInDegrees")
.From("SalesTrendAngle")
.OrderBy(new OrderBy().SetColumnAscending("TrendAngleInDegrees"))
.Build();
Query build by SqlQueryBuilder 2
WITH MonthlyCategorySales
AS (SELECT c.CategoryName AS CategoryName,
DATEPART(month, o.OrderDate) AS SaleMonth,
SUM(od.Quantity * od.UnitPrice) AS MonthlySales
FROM Categories AS c
INNER JOIN
Products AS p
ON c.CategoryID = p.CategoryID
INNER JOIN
[Order Details] AS od
ON p.ProductID = od.ProductID
INNER JOIN
Orders AS o
ON od.OrderID = o.OrderID
WHERE o.OrderDate BETWEEN @pMAIN_2507200147313203940 AND @pMAIN_2507200147313203941
GROUP BY c.CategoryName, DATEPART(month, o.OrderDate)),
CategoryTotalSales
AS (SELECT CategoryName AS CategoryName,
SUM(MonthlySales) AS TotalSales
FROM MonthlyCategorySales
GROUP BY CategoryName),
NormalizedSales
AS (SELECT mcs.CategoryName,
mcs.SaleMonth,
CAST (mcs.MonthlySales AS FLOAT) / cts.TotalSales AS NormalizedSales
FROM MonthlyCategorySales AS mcs
INNER JOIN
CategoryTotalSales AS cts
ON mcs.CategoryName = cts.CategoryName),
SalesTrendAngle
AS (SELECT CategoryName AS CategoryName,
ASIN(AVG(NormalizedSales)) AS TrendAngleInRadians,
DEGREES(ASIN(AVG(NormalizedSales))) AS TrendAngleInDegrees
FROM NormalizedSales
GROUP BY CategoryName)
SELECT CategoryName,
TrendAngleInRadians,
TrendAngleInDegrees
FROM SalesTrendAngle
ORDER BY TrendAngleInDegrees ASC;
Parameters (If used)
Name |
Value |
@pMAIN_2507200147313203940 |
1996-01-01 |
@pMAIN_2507200147313203941 |
1996-12-31 |
Query Results 2:
|
CategoryName |
TrendAngleInRadians |
TrendAngleInDegrees |
1 |
Beverages
|
0.16744807921968932
|
9.594068226860461
|
2 |
Condiments
|
0.16744807921968932
|
9.594068226860461
|
3 |
Confections
|
0.16744807921968932
|
9.594068226860461
|
4 |
Dairy Products
|
0.16744807921968932
|
9.594068226860461
|
5 |
Grains/Cereals
|
0.16744807921968932
|
9.594068226860461
|
6 |
Meat/Poultry
|
0.16744807921968932
|
9.594068226860461
|
7 |
Produce
|
0.16744807921968932
|
9.594068226860461
|
8 |
Seafood
|
0.16744807921968932
|
9.594068226860461
|
3. Usage of SUM to find shipping containers
SQL Server Query 3
WITH OrderUnits AS (
SELECT
o.OrderID,
c.CompanyName AS CustomerName,
SUM(od.Quantity) AS TotalUnits
FROM Orders o
JOIN Customers c ON o.CustomerID = c.CustomerID
JOIN [Order Details] od ON o.OrderID = od.OrderID
GROUP BY o.OrderID, c.CompanyName
)
SELECT
OrderID,
CustomerName,
TotalUnits,
CEILING(CAST(TotalUnits AS FLOAT) / 250) AS NumberOfContainers
FROM OrderUnits
ORDER BY OrderID;
Create SQL query with SqlQueryBuilder 3
var (sql3, parameters3) = new SqlQueryBuilder()
.WithCTETable(new Table("OrderUnits"), new SqlQueryBuilder()
.Select()
.Column("o.OrderID", "OrderID")
.Column("c.CompanyName", "CustomerName")
.Column(new SUM(new Column("od.Quantity")), "TotalUnits")
.From("Orders", "o")
.Join(new List<IJoin>()
{
new INNERJOIN().TableName(new Table("Customers","c"))
.On(new Column("o.CustomerID").Equale( new Column("c.CustomerID"))),
new INNERJOIN().TableName(new Table("[Order Details]","od"))
.On(new Column("o.OrderID").Equale(new Column("od.OrderID")))
})
.GroupBy(new GroupBy(new Column("o.OrderID"), new Column("c.CompanyName")))
)
.Select()
.Columns("OrderID", "CustomerName", "TotalUnits")
.Column(new ColumnArithmatic(new CEILING(new CAST(new Column("TotalUnits"), SqlDataType.FLOAT)))
.DIVIDE(250), "NumberOfContainers")
.From("OrderUnits")
.OrderBy(new OrderBy().SetColumnAscending("OrderID"))
.Build()
Query build by SqlQueryBuilder 3
WITH OrderUnits
AS (SELECT o.OrderID AS OrderID,
c.CompanyName AS CustomerName,
SUM(od.Quantity) AS TotalUnits
FROM Orders AS o
INNER JOIN
Customers AS c
ON o.CustomerID = c.CustomerID
INNER JOIN
[Order Details] AS od
ON o.OrderID = od.OrderID
GROUP BY o.OrderID, c.CompanyName)
SELECT OrderID,
CustomerName,
TotalUnits,
CEILING(CAST (TotalUnits AS FLOAT)) / @pMAIN_2507200147313556190 AS NumberOfContainers
FROM OrderUnits
ORDER BY OrderID ASC;
Parameters (If used)
Name |
Value |
@pMAIN_2507200147313556190 |
250 |
Query Results 3:
|
OrderID |
CustomerName |
TotalUnits |
NumberOfContainers |
1 |
10248
|
Vins et alcools Chevalier
|
27
|
0
|
2 |
10249
|
Toms Spezialitäten
|
49
|
0
|
3 |
10250
|
Hanari Carnes
|
60
|
0
|
4 |
10251
|
Victuailles en stock
|
41
|
0
|
5 |
10252
|
Suprêmes délices
|
105
|
0
|
6 |
10253
|
Hanari Carnes
|
102
|
0
|
7 |
10254
|
Chop-suey Chinese
|
57
|
0
|
8 |
10255
|
Richter Supermarkt
|
110
|
0
|
9 |
10256
|
Wellington Importadora
|
27
|
0
|
10 |
10257
|
HILARION-Abastos
|
46
|
0
|
11 |
10258
|
Ernst Handel
|
121
|
0
|
12 |
10259
|
Centro comercial Moctezuma
|
11
|
0
|
13 |
10260
|
Ottilies Käseladen
|
102
|
0
|
14 |
10261
|
Que Delícia
|
40
|
0
|
15 |
10262
|
Rattlesnake Canyon Grocery
|
29
|
0
|
16 |
10263
|
Ernst Handel
|
184
|
0
|
17 |
10264
|
Folk och fä HB
|
60
|
0
|
18 |
10265
|
Blondesddsl père et fils
|
50
|
0
|
19 |
10266
|
Wartian Herkku
|
12
|
0
|
20 |
10267
|
Frankenversand
|
135
|
0
|
21 |
10268
|
GROSELLA-Restaurante
|
14
|
0
|
22 |
10269
|
White Clover Markets
|
80
|
0
|
23 |
10270
|
Wartian Herkku
|
55
|
0
|
24 |
10271
|
Split Rail Beer & Ale
|
24
|
0
|
25 |
10272
|
Rattlesnake Canyon Grocery
|
70
|
0
|
26 |
10273
|
QUICK-Stop
|
152
|
0
|
27 |
10274
|
Vins et alcools Chevalier
|
27
|
0
|
28 |
10275
|
Magazzini Alimentari Riuniti
|
18
|
0
|
29 |
10276
|
Tortuga Restaurante
|
25
|
0
|
30 |
10277
|
Morgenstern Gesundkost
|
32
|
0
|
31 |
10278
|
Berglunds snabbköp
|
64
|
0
|
32 |
10279
|
Lehmanns Marktstand
|
15
|
0
|
33 |
10280
|
Berglunds snabbköp
|
62
|
0
|
34 |
10281
|
Romero y tomillo
|
11
|
0
|
35 |
10282
|
Romero y tomillo
|
8
|
0
|
36 |
10283
|
LILA-Supermercado
|
76
|
0
|
37 |
10284
|
Lehmanns Marktstand
|
61
|
0
|
38 |
10285
|
QUICK-Stop
|
121
|
0
|
39 |
10286
|
QUICK-Stop
|
140
|
0
|
40 |
10287
|
Ricardo Adocicados
|
75
|
0
|
41 |
10288
|
Reggiani Caseifici
|
13
|
0
|
42 |
10289
|
B's Beverages
|
39
|
0
|
43 |
10290
|
Comércio Mineiro
|
60
|
0
|
44 |
10291
|
Que Delícia
|
46
|
0
|
45 |
10292
|
Tradição Hipermercados
|
20
|
0
|
46 |
10293
|
Tortuga Restaurante
|
33
|
0
|
47 |
10294
|
Rattlesnake Canyon Grocery
|
75
|
0
|
48 |
10295
|
Vins et alcools Chevalier
|
4
|
0
|
49 |
10296
|
LILA-Supermercado
|
57
|
0
|
50 |
10297
|
Blondesddsl père et fils
|
80
|
0
|
51 |
10298
|
Hungry Owl All-Night Grocers
|
125
|
0
|
52 |
10299
|
Ricardo Adocicados
|
35
|
0
|
53 |
10300
|
Magazzini Alimentari Riuniti
|
50
|
0
|
54 |
10301
|
Die Wandernde Kuh
|
30
|
0
|
55 |
10302
|
Suprêmes délices
|
80
|
0
|
56 |
10303
|
Godos Cocina Típica
|
85
|
0
|
57 |
10304
|
Tortuga Restaurante
|
42
|
0
|
58 |
10305
|
Old World Delicatessen
|
80
|
0
|
59 |
10306
|
Romero y tomillo
|
25
|
0
|
60 |
10307
|
Lonesome Pine Restaurant
|
13
|
0
|
61 |
10308
|
Ana Trujillo Emparedados y helados
|
6
|
0
|
62 |
10309
|
Hungry Owl All-Night Grocers
|
75
|
0
|
63 |
10310
|
The Big Cheese
|
15
|
0
|
64 |
10311
|
Du monde entier
|
13
|
0
|
65 |
10312
|
Die Wandernde Kuh
|
58
|
0
|
66 |
10313
|
QUICK-Stop
|
12
|
0
|
67 |
10314
|
Rattlesnake Canyon Grocery
|
95
|
0
|
68 |
10315
|
Island Trading
|
44
|
0
|
69 |
10316
|
Rattlesnake Canyon Grocery
|
80
|
0
|
70 |
10317
|
Lonesome Pine Restaurant
|
20
|
0
|
71 |
10318
|
Island Trading
|
26
|
0
|
72 |
10319
|
Tortuga Restaurante
|
52
|
0
|
73 |
10320
|
Wartian Herkku
|
30
|
0
|
74 |
10321
|
Island Trading
|
10
|
0
|
75 |
10322
|
Pericles Comidas clásicas
|
20
|
0
|
76 |
10323
|
Königlich Essen
|
13
|
0
|
77 |
10324
|
Save-a-lot Markets
|
241
|
0
|
78 |
10325
|
Königlich Essen
|
71
|
0
|
79 |
10326
|
Bólido Comidas preparadas
|
90
|
0
|
80 |
10327
|
Folk och fä HB
|
140
|
0
|
81 |
10328
|
Furia Bacalhau e Frutos do Mar
|
59
|
0
|
82 |
10329
|
Split Rail Beer & Ale
|
50
|
0
|
83 |
10330
|
LILA-Supermercado
|
75
|
0
|
84 |
10331
|
Bon app'
|
15
|
0
|
85 |
10332
|
Mère Paillarde
|
66
|
0
|
86 |
10333
|
Wartian Herkku
|
60
|
0
|
87 |
10334
|
Victuailles en stock
|
18
|
0
|
88 |
10335
|
Hungry Owl All-Night Grocers
|
86
|
0
|
89 |
10336
|
Princesa Isabel Vinhos
|
18
|
0
|
90 |
10337
|
Frankenversand
|
137
|
0
|
91 |
10338
|
Old World Delicatessen
|
35
|
0
|
92 |
10339
|
Mère Paillarde
|
108
|
0
|
93 |
10340
|
Bon app'
|
72
|
0
|
94 |
10341
|
Simons bistro
|
17
|
0
|
95 |
10342
|
Frankenversand
|
160
|
0
|
96 |
10343
|
Lehmanns Marktstand
|
69
|
0
|
97 |
10344
|
White Clover Markets
|
105
|
0
|
98 |
10345
|
QUICK-Stop
|
159
|
0
|
99 |
10346
|
Rattlesnake Canyon Grocery
|
56
|
0
|
100 |
10347
|
Familia Arquibaldo
|
70
|
0
|
101 |
10348
|
Die Wandernde Kuh
|
40
|
0
|
102 |
10349
|
Split Rail Beer & Ale
|
24
|
0
|
103 |
10350
|
La maison d'Asie
|
33
|
0
|
104 |
10351
|
Ernst Handel
|
120
|
0
|
105 |
10352
|
Furia Bacalhau e Frutos do Mar
|
30
|
0
|
106 |
10353
|
Piccolo und mehr
|
62
|
0
|
107 |
10354
|
Pericles Comidas clásicas
|
16
|
0
|
108 |
10355
|
Around the Horn
|
50
|
0
|
109 |
10356
|
Die Wandernde Kuh
|
62
|
0
|
110 |
10357
|
LILA-Supermercado
|
54
|
0
|
111 |
10358
|
La maison d'Asie
|
40
|
0
|
112 |
10359
|
Seven Seas Imports
|
206
|
0
|
113 |
10360
|
Blondesddsl père et fils
|
138
|
0
|
114 |
10361
|
QUICK-Stop
|
109
|
0
|
115 |
10362
|
Bon app'
|
94
|
0
|
116 |
10363
|
Drachenblut Delikatessen
|
44
|
0
|
117 |
10364
|
Eastern Connection
|
35
|
0
|
118 |
10365
|
Antonio Moreno Taquería
|
24
|
0
|
119 |
10366
|
Galería del gastrónomo
|
10
|
0
|
120 |
10367
|
Vaffeljernet
|
76
|
0
|
121 |
10368
|
Ernst Handel
|
78
|
0
|
122 |
10369
|
Split Rail Beer & Ale
|
38
|
0
|
123 |
10370
|
Chop-suey Chinese
|
65
|
0
|
124 |
10371
|
La maison d'Asie
|
6
|
0
|
125 |
10372
|
Queen Cozinha
|
164
|
0
|
126 |
10373
|
Hungry Owl All-Night Grocers
|
130
|
0
|
127 |
10374
|
Wolski Zajazd
|
45
|
0
|
128 |
10375
|
Hungry Coyote Import Store
|
25
|
0
|
129 |
10376
|
Mère Paillarde
|
42
|
0
|
130 |
10377
|
Seven Seas Imports
|
40
|
0
|
131 |
10378
|
Folk och fä HB
|
6
|
0
|
132 |
10379
|
Que Delícia
|
44
|
0
|
133 |
10380
|
Hungry Owl All-Night Grocers
|
74
|
0
|
134 |
10381
|
LILA-Supermercado
|
14
|
0
|
135 |
10382
|
Ernst Handel
|
165
|
0
|
136 |
10383
|
Around the Horn
|
55
|
0
|
137 |
10384
|
Berglunds snabbköp
|
43
|
0
|
138 |
10385
|
Split Rail Beer & Ale
|
38
|
0
|
139 |
10386
|
Familia Arquibaldo
|
25
|
0
|
140 |
10387
|
Santé Gourmet
|
48
|
0
|
141 |
10388
|
Seven Seas Imports
|
75
|
0
|
142 |
10389
|
Bottom-Dollar Markets
|
81
|
0
|
143 |
10390
|
Ernst Handel
|
169
|
0
|
144 |
10391
|
Drachenblut Delikatessen
|
18
|
0
|
145 |
10392
|
Piccolo und mehr
|
50
|
0
|
146 |
10393
|
Save-a-lot Markets
|
176
|
0
|
147 |
10394
|
Hungry Coyote Import Store
|
20
|
0
|
148 |
10395
|
HILARION-Abastos
|
106
|
0
|
149 |
10396
|
Frankenversand
|
121
|
0
|
150 |
10397
|
Princesa Isabel Vinhos
|
28
|
0
|
151 |
10398
|
Save-a-lot Markets
|
150
|
0
|
152 |
10399
|
Vaffeljernet
|
139
|
0
|
153 |
10400
|
Eastern Connection
|
86
|
0
|
154 |
10401
|
Rattlesnake Canyon Grocery
|
168
|
0
|
155 |
10402
|
Ernst Handel
|
125
|
0
|
156 |
10403
|
Ernst Handel
|
91
|
0
|
157 |
10404
|
Magazzini Alimentari Riuniti
|
100
|
0
|
158 |
10405
|
LINO-Delicateses
|
50
|
0
|
159 |
10406
|
Queen Cozinha
|
89
|
0
|
160 |
10407
|
Ottilies Käseladen
|
60
|
0
|
161 |
10408
|
Folies gourmandes
|
51
|
0
|
162 |
10409
|
Océano Atlántico Ltda.
|
24
|
0
|
163 |
10410
|
Bottom-Dollar Markets
|
65
|
0
|
164 |
10411
|
Bottom-Dollar Markets
|
74
|
0
|
165 |
10412
|
Wartian Herkku
|
20
|
0
|
166 |
10413
|
La maison d'Asie
|
78
|
0
|
167 |
10414
|
Familia Arquibaldo
|
68
|
0
|
168 |
10415
|
Hungry Coyote Import Store
|
22
|
0
|
169 |
10416
|
Wartian Herkku
|
50
|
0
|
170 |
10417
|
Simons bistro
|
123
|
0
|
171 |
10418
|
QUICK-Stop
|
146
|
0
|
172 |
10419
|
Richter Supermarkt
|
80
|
0
|
173 |
10420
|
Wellington Importadora
|
50
|
0
|
174 |
10421
|
Que Delícia
|
59
|
0
|
175 |
10422
|
Franchi S.p.A.
|
2
|
0
|
176 |
10423
|
Gourmet Lanchonetes
|
34
|
0
|
177 |
10424
|
Mère Paillarde
|
139
|
0
|
178 |
10425
|
La maison d'Asie
|
30
|
0
|
179 |
10426
|
Galería del gastrónomo
|
12
|
0
|
180 |
10427
|
Piccolo und mehr
|
35
|
0
|
181 |
10428
|
Reggiani Caseifici
|
20
|
0
|
182 |
10429
|
Hungry Owl All-Night Grocers
|
75
|
0
|
183 |
10430
|
Ernst Handel
|
195
|
0
|
184 |
10431
|
Bottom-Dollar Markets
|
130
|
0
|
185 |
10432
|
Split Rail Beer & Ale
|
50
|
0
|
186 |
10433
|
Princesa Isabel Vinhos
|
28
|
0
|
187 |
10434
|
Folk och fä HB
|
24
|
0
|
188 |
10435
|
Consolidated Holdings
|
32
|
0
|
189 |
10436
|
Blondesddsl père et fils
|
99
|
0
|
190 |
10437
|
Wartian Herkku
|
15
|
0
|
191 |
10438
|
Toms Spezialitäten
|
50
|
0
|
192 |
10439
|
Mère Paillarde
|
67
|
0
|
193 |
10440
|
Save-a-lot Markets
|
208
|
0
|
194 |
10441
|
Old World Delicatessen
|
50
|
0
|
195 |
10442
|
Ernst Handel
|
170
|
0
|
196 |
10443
|
Reggiani Caseifici
|
18
|
0
|
197 |
10444
|
Berglunds snabbköp
|
63
|
0
|
198 |
10445
|
Berglunds snabbköp
|
21
|
0
|
199 |
10446
|
Toms Spezialitäten
|
50
|
0
|
200 |
10447
|
Ricardo Adocicados
|
77
|
0
|
201 |
10448
|
Rancho grande
|
26
|
0
|
202 |
10449
|
Blondesddsl père et fils
|
69
|
0
|
203 |
10450
|
Victuailles en stock
|
26
|
0
|
204 |
10451
|
QUICK-Stop
|
238
|
0
|
205 |
10452
|
Save-a-lot Markets
|
115
|
0
|
206 |
10453
|
Around the Horn
|
40
|
0
|
207 |
10454
|
La maison d'Asie
|
50
|
0
|
208 |
10455
|
Wartian Herkku
|
125
|
0
|
209 |
10456
|
Königlich Essen
|
61
|
0
|
210 |
10457
|
Königlich Essen
|
36
|
0
|
211 |
10458
|
Suprêmes délices
|
145
|
0
|
212 |
10459
|
Victuailles en stock
|
76
|
0
|
213 |
10460
|
Folk och fä HB
|
25
|
0
|
214 |
10461
|
LILA-Supermercado
|
128
|
0
|
215 |
10462
|
Consolidated Holdings
|
22
|
0
|
216 |
10463
|
Suprêmes délices
|
71
|
0
|
217 |
10464
|
Furia Bacalhau e Frutos do Mar
|
69
|
0
|
218 |
10465
|
Vaffeljernet
|
118
|
0
|
219 |
10466
|
Comércio Mineiro
|
15
|
0
|
220 |
10467
|
Magazzini Alimentari Riuniti
|
40
|
0
|
221 |
10468
|
Königlich Essen
|
23
|
0
|
222 |
10469
|
White Clover Markets
|
77
|
0
|
223 |
10470
|
Bon app'
|
53
|
0
|
224 |
10471
|
B's Beverages
|
50
|
0
|
225 |
10472
|
Seven Seas Imports
|
98
|
0
|
226 |
10473
|
Island Trading
|
24
|
0
|
227 |
10474
|
Pericles Comidas clásicas
|
61
|
0
|
228 |
10475
|
Suprêmes délices
|
137
|
0
|
229 |
10476
|
HILARION-Abastos
|
14
|
0
|
230 |
10477
|
Princesa Isabel Vinhos
|
56
|
0
|
231 |
10478
|
Victuailles en stock
|
20
|
0
|
232 |
10479
|
Rattlesnake Canyon Grocery
|
148
|
0
|
233 |
10480
|
Folies gourmandes
|
42
|
0
|
234 |
10481
|
Ricardo Adocicados
|
64
|
0
|
235 |
10482
|
Lazy K Kountry Store
|
10
|
0
|
236 |
10483
|
White Clover Markets
|
65
|
0
|
237 |
10484
|
B's Beverages
|
27
|
0
|
238 |
10485
|
LINO-Delicateses
|
130
|
0
|
239 |
10486
|
HILARION-Abastos
|
46
|
0
|
240 |
10487
|
Queen Cozinha
|
59
|
0
|
241 |
10488
|
Frankenversand
|
50
|
0
|
242 |
10489
|
Piccolo und mehr
|
33
|
0
|
243 |
10490
|
HILARION-Abastos
|
126
|
0
|
244 |
10491
|
Furia Bacalhau e Frutos do Mar
|
22
|
0
|
245 |
10492
|
Bottom-Dollar Markets
|
80
|
0
|
246 |
10493
|
La maison d'Asie
|
35
|
0
|
247 |
10494
|
Comércio Mineiro
|
30
|
0
|
248 |
10495
|
Laughing Bacchus Wine Cellars
|
35
|
0
|
249 |
10496
|
Tradição Hipermercados
|
20
|
0
|
250 |
10497
|
Lehmanns Marktstand
|
64
|
0
|
251 |
10498
|
HILARION-Abastos
|
49
|
0
|
252 |
10499
|
LILA-Supermercado
|
45
|
0
|
253 |
10500
|
La maison d'Asie
|
20
|
0
|
254 |
10501
|
Blauer See Delikatessen
|
20
|
0
|
255 |
10502
|
Pericles Comidas clásicas
|
57
|
0
|
256 |
10503
|
Hungry Owl All-Night Grocers
|
90
|
0
|
257 |
10504
|
White Clover Markets
|
59
|
0
|
258 |
10505
|
Mère Paillarde
|
3
|
0
|
259 |
10506
|
Königlich Essen
|
32
|
0
|
260 |
10507
|
Antonio Moreno Taquería
|
30
|
0
|
261 |
10508
|
Ottilies Käseladen
|
20
|
0
|
262 |
10509
|
Blauer See Delikatessen
|
3
|
0
|
263 |
10510
|
Save-a-lot Markets
|
72
|
0
|
264 |
10511
|
Bon app'
|
110
|
0
|
265 |
10512
|
Familia Arquibaldo
|
37
|
0
|
266 |
10513
|
Die Wandernde Kuh
|
105
|
0
|
267 |
10514
|
Ernst Handel
|
233
|
0
|
268 |
10515
|
QUICK-Stop
|
286
|
1
|
269 |
10516
|
Hungry Owl All-Night Grocers
|
125
|
0
|
270 |
10517
|
North/South
|
16
|
0
|
271 |
10518
|
Tortuga Restaurante
|
29
|
0
|
272 |
10519
|
Chop-suey Chinese
|
66
|
0
|
273 |
10520
|
Santé Gourmet
|
13
|
0
|
274 |
10521
|
Cactus Comidas para llevar
|
19
|
0
|
275 |
10522
|
Lehmanns Marktstand
|
109
|
0
|
276 |
10523
|
Seven Seas Imports
|
64
|
0
|
277 |
10524
|
Berglunds snabbköp
|
87
|
0
|
278 |
10525
|
Bon app'
|
45
|
0
|
279 |
10526
|
Wartian Herkku
|
48
|
0
|
280 |
10527
|
QUICK-Stop
|
80
|
0
|
281 |
10528
|
Great Lakes Food Market
|
20
|
0
|
282 |
10529
|
Maison Dewey
|
44
|
0
|
283 |
10530
|
Piccolo und mehr
|
135
|
0
|
284 |
10531
|
Océano Atlántico Ltda.
|
2
|
0
|
285 |
10532
|
Eastern Connection
|
39
|
0
|
286 |
10533
|
Folk och fä HB
|
98
|
0
|
287 |
10534
|
Lehmanns Marktstand
|
30
|
0
|
288 |
10535
|
Antonio Moreno Taquería
|
80
|
0
|
289 |
10536
|
Lehmanns Marktstand
|
100
|
0
|
290 |
10537
|
Richter Supermarkt
|
86
|
0
|
291 |
10538
|
B's Beverages
|
8
|
0
|
292 |
10539
|
B's Beverages
|
44
|
0
|
293 |
10540
|
QUICK-Stop
|
165
|
0
|
294 |
10541
|
Hanari Carnes
|
84
|
0
|
295 |
10542
|
Königlich Essen
|
39
|
0
|
296 |
10543
|
LILA-Supermercado
|
100
|
0
|
297 |
10544
|
Lonesome Pine Restaurant
|
14
|
0
|
298 |
10545
|
Lazy K Kountry Store
|
10
|
0
|
299 |
10546
|
Victuailles en stock
|
80
|
0
|
300 |
10547
|
Seven Seas Imports
|
84
|
0
|
301 |
10548
|
Toms Spezialitäten
|
24
|
0
|
302 |
10549
|
QUICK-Stop
|
203
|
0
|
303 |
10550
|
Godos Cocina Típica
|
34
|
0
|
304 |
10551
|
Furia Bacalhau e Frutos do Mar
|
100
|
0
|
305 |
10552
|
HILARION-Abastos
|
48
|
0
|
306 |
10553
|
Wartian Herkku
|
89
|
0
|
307 |
10554
|
Ottilies Käseladen
|
80
|
0
|
308 |
10555
|
Save-a-lot Markets
|
143
|
0
|
309 |
10556
|
Simons bistro
|
24
|
0
|
310 |
10557
|
Lehmanns Marktstand
|
50
|
0
|
311 |
10558
|
Around the Horn
|
96
|
0
|
312 |
10559
|
Blondesddsl père et fils
|
30
|
0
|
313 |
10560
|
Frankenversand
|
35
|
0
|
314 |
10561
|
Folk och fä HB
|
60
|
0
|
315 |
10562
|
Reggiani Caseifici
|
30
|
0
|
316 |
10563
|
Ricardo Adocicados
|
95
|
0
|
317 |
10564
|
Rattlesnake Canyon Grocery
|
47
|
0
|
318 |
10565
|
Mère Paillarde
|
43
|
0
|
319 |
10566
|
Blondesddsl père et fils
|
63
|
0
|
320 |
10567
|
Hungry Owl All-Night Grocers
|
103
|
0
|
321 |
10568
|
Galería del gastrónomo
|
5
|
0
|
322 |
10569
|
Rattlesnake Canyon Grocery
|
65
|
0
|
323 |
10570
|
Mère Paillarde
|
75
|
0
|
324 |
10571
|
Ernst Handel
|
39
|
0
|
325 |
10572
|
Berglunds snabbköp
|
87
|
0
|
326 |
10573
|
Antonio Moreno Taquería
|
83
|
0
|
327 |
10574
|
Trail's Head Gourmet Provisioners
|
32
|
0
|
328 |
10575
|
Morgenstern Gesundkost
|
58
|
0
|
329 |
10576
|
Tortuga Restaurante
|
51
|
0
|
330 |
10577
|
Trail's Head Gourmet Provisioners
|
48
|
0
|
331 |
10578
|
B's Beverages
|
26
|
0
|
332 |
10579
|
Let's Stop N Shop
|
31
|
0
|
333 |
10580
|
Ottilies Käseladen
|
54
|
0
|
334 |
10581
|
Familia Arquibaldo
|
50
|
0
|
335 |
10582
|
Blauer See Delikatessen
|
18
|
0
|
336 |
10583
|
Wartian Herkku
|
44
|
0
|
337 |
10584
|
Blondesddsl père et fils
|
50
|
0
|
338 |
10585
|
Wellington Importadora
|
15
|
0
|
339 |
10586
|
Reggiani Caseifici
|
4
|
0
|
340 |
10587
|
Que Delícia
|
46
|
0
|
341 |
10588
|
QUICK-Stop
|
140
|
0
|
342 |
10589
|
Great Lakes Food Market
|
4
|
0
|
343 |
10590
|
Mère Paillarde
|
80
|
0
|
344 |
10591
|
Vaffeljernet
|
74
|
0
|
345 |
10592
|
Lehmanns Marktstand
|
30
|
0
|
346 |
10593
|
Lehmanns Marktstand
|
45
|
0
|
347 |
10594
|
Old World Delicatessen
|
54
|
0
|
348 |
10595
|
Ernst Handel
|
215
|
0
|
349 |
10596
|
White Clover Markets
|
59
|
0
|
350 |
10597
|
Piccolo und mehr
|
67
|
0
|
351 |
10598
|
Rattlesnake Canyon Grocery
|
59
|
0
|
352 |
10599
|
B's Beverages
|
10
|
0
|
353 |
10600
|
Hungry Coyote Import Store
|
34
|
0
|
354 |
10601
|
HILARION-Abastos
|
95
|
0
|
355 |
10602
|
Vaffeljernet
|
5
|
0
|
356 |
10603
|
Save-a-lot Markets
|
73
|
0
|
357 |
10604
|
Furia Bacalhau e Frutos do Mar
|
16
|
0
|
358 |
10605
|
Mère Paillarde
|
135
|
0
|
359 |
10606
|
Tradição Hipermercados
|
50
|
0
|
360 |
10607
|
Save-a-lot Markets
|
213
|
0
|
361 |
10608
|
Toms Spezialitäten
|
28
|
0
|
362 |
10609
|
Du monde entier
|
19
|
0
|
363 |
10610
|
La maison d'Asie
|
21
|
0
|
364 |
10611
|
Wolski Zajazd
|
31
|
0
|
365 |
10612
|
Save-a-lot Markets
|
263
|
1
|
366 |
10613
|
HILARION-Abastos
|
48
|
0
|
367 |
10614
|
Blauer See Delikatessen
|
27
|
0
|
368 |
10615
|
Wilman Kala
|
5
|
0
|
369 |
10616
|
Great Lakes Food Market
|
59
|
0
|
370 |
10617
|
Great Lakes Food Market
|
30
|
0
|
371 |
10618
|
Mère Paillarde
|
105
|
0
|
372 |
10619
|
Mère Paillarde
|
82
|
0
|
373 |
10620
|
Laughing Bacchus Wine Cellars
|
10
|
0
|
374 |
10621
|
Island Trading
|
50
|
0
|
375 |
10622
|
Ricardo Adocicados
|
38
|
0
|
376 |
10623
|
Frankenversand
|
94
|
0
|
377 |
10624
|
The Cracker Box
|
26
|
0
|
378 |
10625
|
Ana Trujillo Emparedados y helados
|
18
|
0
|
379 |
10626
|
Berglunds snabbköp
|
52
|
0
|
380 |
10627
|
Save-a-lot Markets
|
50
|
0
|
381 |
10628
|
Blondesddsl père et fils
|
25
|
0
|
382 |
10629
|
Godos Cocina Típica
|
29
|
0
|
383 |
10630
|
Königlich Essen
|
47
|
0
|
384 |
10631
|
La maison d'Asie
|
8
|
0
|
385 |
10632
|
Die Wandernde Kuh
|
50
|
0
|
386 |
10633
|
Ernst Handel
|
164
|
0
|
387 |
10634
|
Folies gourmandes
|
102
|
0
|
388 |
10635
|
Magazzini Alimentari Riuniti
|
65
|
0
|
389 |
10636
|
Wartian Herkku
|
31
|
0
|
390 |
10637
|
Queen Cozinha
|
95
|
0
|
391 |
10638
|
LINO-Delicateses
|
101
|
0
|
392 |
10639
|
Santé Gourmet
|
8
|
0
|
393 |
10640
|
Die Wandernde Kuh
|
35
|
0
|
394 |
10641
|
HILARION-Abastos
|
110
|
0
|
395 |
10642
|
Simons bistro
|
50
|
0
|
396 |
10643
|
Alfreds Futterkiste
|
38
|
0
|
397 |
10644
|
Wellington Importadora
|
45
|
0
|
398 |
10645
|
Hanari Carnes
|
35
|
0
|
399 |
10646
|
Hungry Owl All-Night Grocers
|
98
|
0
|
400 |
10647
|
Que Delícia
|
50
|
0
|
401 |
10648
|
Ricardo Adocicados
|
30
|
0
|
402 |
10649
|
Maison Dewey
|
35
|
0
|
403 |
10650
|
Familia Arquibaldo
|
85
|
0
|
404 |
10651
|
Die Wandernde Kuh
|
32
|
0
|
405 |
10652
|
Gourmet Lanchonetes
|
22
|
0
|
406 |
10653
|
Frankenversand
|
50
|
0
|
407 |
10654
|
Berglunds snabbköp
|
38
|
0
|
408 |
10655
|
Reggiani Caseifici
|
20
|
0
|
409 |
10656
|
Great Lakes Food Market
|
37
|
0
|
410 |
10657
|
Save-a-lot Markets
|
204
|
0
|
411 |
10658
|
QUICK-Stop
|
255
|
1
|
412 |
10659
|
Queen Cozinha
|
84
|
0
|
413 |
10660
|
Hungry Coyote Import Store
|
21
|
0
|
414 |
10661
|
Hungry Owl All-Night Grocers
|
52
|
0
|
415 |
10662
|
Lonesome Pine Restaurant
|
10
|
0
|
416 |
10663
|
Bon app'
|
80
|
0
|
417 |
10664
|
Furia Bacalhau e Frutos do Mar
|
51
|
0
|
418 |
10665
|
Lonesome Pine Restaurant
|
31
|
0
|
419 |
10666
|
Richter Supermarkt
|
46
|
0
|
420 |
10667
|
Ernst Handel
|
59
|
0
|
421 |
10668
|
Die Wandernde Kuh
|
27
|
0
|
422 |
10669
|
Simons bistro
|
30
|
0
|
423 |
10670
|
Frankenversand
|
192
|
0
|
424 |
10671
|
France restauration
|
32
|
0
|
425 |
10672
|
Berglunds snabbköp
|
27
|
0
|
426 |
10673
|
Wilman Kala
|
15
|
0
|
427 |
10674
|
Island Trading
|
5
|
0
|
428 |
10675
|
Frankenversand
|
70
|
0
|
429 |
10676
|
Tortuga Restaurante
|
30
|
0
|
430 |
10677
|
Antonio Moreno Taquería
|
38
|
0
|
431 |
10678
|
Save-a-lot Markets
|
280
|
1
|
432 |
10679
|
Blondesddsl père et fils
|
12
|
0
|
433 |
10680
|
Old World Delicatessen
|
110
|
0
|
434 |
10681
|
Great Lakes Food Market
|
70
|
0
|
435 |
10682
|
Antonio Moreno Taquería
|
64
|
0
|
436 |
10683
|
Du monde entier
|
9
|
0
|
437 |
10684
|
Ottilies Käseladen
|
90
|
0
|
438 |
10685
|
Gourmet Lanchonetes
|
39
|
0
|
439 |
10686
|
Piccolo und mehr
|
45
|
0
|
440 |
10687
|
Hungry Owl All-Night Grocers
|
66
|
0
|
441 |
10688
|
Vaffeljernet
|
92
|
0
|
442 |
10689
|
Berglunds snabbköp
|
35
|
0
|
443 |
10690
|
Hanari Carnes
|
50
|
0
|
444 |
10691
|
QUICK-Stop
|
182
|
0
|
445 |
10692
|
Alfreds Futterkiste
|
20
|
0
|
446 |
10693
|
White Clover Markets
|
111
|
0
|
447 |
10694
|
QUICK-Stop
|
165
|
0
|
448 |
10695
|
Wilman Kala
|
34
|
0
|
449 |
10696
|
White Clover Markets
|
38
|
0
|
450 |
10697
|
LINO-Delicateses
|
76
|
0
|
451 |
10698
|
Ernst Handel
|
108
|
0
|
452 |
10699
|
Morgenstern Gesundkost
|
12
|
0
|
453 |
10700
|
Save-a-lot Markets
|
117
|
0
|
454 |
10701
|
Hungry Owl All-Night Grocers
|
97
|
0
|
455 |
10702
|
Alfreds Futterkiste
|
21
|
0
|
456 |
10703
|
Folk och fä HB
|
75
|
0
|
457 |
10704
|
Queen Cozinha
|
65
|
0
|
458 |
10705
|
HILARION-Abastos
|
24
|
0
|
459 |
10706
|
Old World Delicatessen
|
52
|
0
|
460 |
10707
|
Around the Horn
|
89
|
0
|
461 |
10708
|
The Big Cheese
|
9
|
0
|
462 |
10709
|
Gourmet Lanchonetes
|
78
|
0
|
463 |
10710
|
Franchi S.p.A.
|
10
|
0
|
464 |
10711
|
Save-a-lot Markets
|
174
|
0
|
465 |
10712
|
Hungry Owl All-Night Grocers
|
33
|
0
|
466 |
10713
|
Save-a-lot Markets
|
182
|
0
|
467 |
10714
|
Save-a-lot Markets
|
137
|
0
|
468 |
10715
|
Bon app'
|
51
|
0
|
469 |
10716
|
Rancho grande
|
22
|
0
|
470 |
10717
|
Frankenversand
|
72
|
0
|
471 |
10718
|
Königlich Essen
|
116
|
0
|
472 |
10719
|
Let's Stop N Shop
|
55
|
0
|
473 |
10720
|
Que Delícia
|
29
|
0
|
474 |
10721
|
QUICK-Stop
|
50
|
0
|
475 |
10722
|
Save-a-lot Markets
|
140
|
0
|
476 |
10723
|
White Clover Markets
|
15
|
0
|
477 |
10724
|
Mère Paillarde
|
21
|
0
|
478 |
10725
|
Familia Arquibaldo
|
22
|
0
|
479 |
10726
|
Eastern Connection
|
30
|
0
|
480 |
10727
|
Reggiani Caseifici
|
40
|
0
|
481 |
10728
|
Queen Cozinha
|
48
|
0
|
482 |
10729
|
LINO-Delicateses
|
120
|
0
|
483 |
10730
|
Bon app'
|
28
|
0
|
484 |
10731
|
Chop-suey Chinese
|
70
|
0
|
485 |
10732
|
Bon app'
|
20
|
0
|
486 |
10733
|
Berglunds snabbköp
|
61
|
0
|
487 |
10734
|
Gourmet Lanchonetes
|
65
|
0
|
488 |
10735
|
Let's Stop N Shop
|
22
|
0
|
489 |
10736
|
Hungry Owl All-Night Grocers
|
60
|
0
|
490 |
10737
|
Vins et alcools Chevalier
|
16
|
0
|
491 |
10738
|
Spécialités du monde
|
3
|
0
|
492 |
10739
|
Vins et alcools Chevalier
|
24
|
0
|
493 |
10740
|
White Clover Markets
|
94
|
0
|
494 |
10741
|
Around the Horn
|
15
|
0
|
495 |
10742
|
Bottom-Dollar Markets
|
105
|
0
|
496 |
10743
|
Around the Horn
|
28
|
0
|
497 |
10744
|
Vaffeljernet
|
50
|
0
|
498 |
10745
|
QUICK-Stop
|
92
|
0
|
499 |
10746
|
Chop-suey Chinese
|
83
|
0
|
500 |
10747
|
Piccolo und mehr
|
82
|
0
|
501 |
10748
|
Save-a-lot Markets
|
112
|
0
|
502 |
10749
|
Island Trading
|
31
|
0
|
503 |
10750
|
Wartian Herkku
|
70
|
0
|
504 |
10751
|
Richter Supermarkt
|
77
|
0
|
505 |
10752
|
North/South
|
11
|
0
|
506 |
10753
|
Franchi S.p.A.
|
9
|
0
|
507 |
10754
|
Magazzini Alimentari Riuniti
|
3
|
0
|
508 |
10755
|
Bon app'
|
99
|
0
|
509 |
10756
|
Split Rail Beer & Ale
|
67
|
0
|
510 |
10757
|
Save-a-lot Markets
|
91
|
0
|
511 |
10758
|
Richter Supermarkt
|
120
|
0
|
512 |
10759
|
Ana Trujillo Emparedados y helados
|
10
|
0
|
513 |
10760
|
Maison Dewey
|
82
|
0
|
514 |
10761
|
Rattlesnake Canyon Grocery
|
53
|
0
|
515 |
10762
|
Folk och fä HB
|
134
|
0
|
516 |
10763
|
Folies gourmandes
|
66
|
0
|
517 |
10764
|
Ernst Handel
|
150
|
0
|
518 |
10765
|
QUICK-Stop
|
80
|
0
|
519 |
10766
|
Ottilies Käseladen
|
115
|
0
|
520 |
10767
|
Suprêmes délices
|
2
|
0
|
521 |
10768
|
Around the Horn
|
81
|
0
|
522 |
10769
|
Vaffeljernet
|
80
|
0
|
523 |
10770
|
Hanari Carnes
|
15
|
0
|
524 |
10771
|
Ernst Handel
|
16
|
0
|
525 |
10772
|
Lehmanns Marktstand
|
43
|
0
|
526 |
10773
|
Ernst Handel
|
110
|
0
|
527 |
10774
|
Folk och fä HB
|
52
|
0
|
528 |
10775
|
The Cracker Box
|
9
|
0
|
529 |
10776
|
Ernst Handel
|
175
|
0
|
530 |
10777
|
Gourmet Lanchonetes
|
20
|
0
|
531 |
10778
|
Berglunds snabbköp
|
10
|
0
|
532 |
10779
|
Morgenstern Gesundkost
|
40
|
0
|
533 |
10780
|
LILA-Supermercado
|
50
|
0
|
534 |
10781
|
Wartian Herkku
|
58
|
0
|
535 |
10782
|
Cactus Comidas para llevar
|
1
|
0
|
536 |
10783
|
Hanari Carnes
|
15
|
0
|
537 |
10784
|
Magazzini Alimentari Riuniti
|
62
|
0
|
538 |
10785
|
GROSELLA-Restaurante
|
20
|
0
|
539 |
10786
|
Queen Cozinha
|
87
|
0
|
540 |
10787
|
La maison d'Asie
|
35
|
0
|
541 |
10788
|
QUICK-Stop
|
90
|
0
|
542 |
10789
|
Folies gourmandes
|
93
|
0
|
543 |
10790
|
Gourmet Lanchonetes
|
23
|
0
|
544 |
10791
|
Frankenversand
|
34
|
0
|
545 |
10792
|
Wolski Zajazd
|
28
|
0
|
546 |
10793
|
Around the Horn
|
22
|
0
|
547 |
10794
|
Que Delícia
|
21
|
0
|
548 |
10795
|
Ernst Handel
|
100
|
0
|
549 |
10796
|
HILARION-Abastos
|
90
|
0
|
550 |
10797
|
Drachenblut Delikatessen
|
20
|
0
|
551 |
10798
|
Island Trading
|
12
|
0
|
552 |
10799
|
Königlich Essen
|
65
|
0
|
553 |
10800
|
Seven Seas Imports
|
67
|
0
|
554 |
10801
|
Bólido Comidas preparadas
|
60
|
0
|
555 |
10802
|
Simons bistro
|
120
|
0
|
556 |
10803
|
Wellington Importadora
|
54
|
0
|
557 |
10804
|
Seven Seas Imports
|
64
|
0
|
558 |
10805
|
The Big Cheese
|
20
|
0
|
559 |
10806
|
Victuailles en stock
|
37
|
0
|
560 |
10807
|
Franchi S.p.A.
|
1
|
0
|
561 |
10808
|
Old World Delicatessen
|
70
|
0
|
562 |
10809
|
Wellington Importadora
|
20
|
0
|
563 |
10810
|
Laughing Bacchus Wine Cellars
|
17
|
0
|
564 |
10811
|
LINO-Delicateses
|
63
|
0
|
565 |
10812
|
Reggiani Caseifici
|
76
|
0
|
566 |
10813
|
Ricardo Adocicados
|
47
|
0
|
567 |
10814
|
Victuailles en stock
|
78
|
0
|
568 |
10815
|
Save-a-lot Markets
|
16
|
0
|
569 |
10816
|
Great Lakes Food Market
|
50
|
0
|
570 |
10817
|
Königlich Essen
|
155
|
0
|
571 |
10818
|
Magazzini Alimentari Riuniti
|
40
|
0
|
572 |
10819
|
Cactus Comidas para llevar
|
27
|
0
|
573 |
10820
|
Rattlesnake Canyon Grocery
|
30
|
0
|
574 |
10821
|
Split Rail Beer & Ale
|
26
|
0
|
575 |
10822
|
Trail's Head Gourmet Provisioners
|
9
|
0
|
576 |
10823
|
LILA-Supermercado
|
90
|
0
|
577 |
10824
|
Folk och fä HB
|
21
|
0
|
578 |
10825
|
Drachenblut Delikatessen
|
32
|
0
|
579 |
10826
|
Blondesddsl père et fils
|
50
|
0
|
580 |
10827
|
Bon app'
|
36
|
0
|
581 |
10828
|
Rancho grande
|
7
|
0
|
582 |
10829
|
Island Trading
|
61
|
0
|
583 |
10830
|
Tradição Hipermercados
|
88
|
0
|
584 |
10831
|
Santé Gourmet
|
27
|
0
|
585 |
10832
|
La maison d'Asie
|
32
|
0
|
586 |
10833
|
Ottilies Käseladen
|
38
|
0
|
587 |
10834
|
Tradição Hipermercados
|
28
|
0
|
588 |
10835
|
Alfreds Futterkiste
|
17
|
0
|
589 |
10836
|
Ernst Handel
|
172
|
0
|
590 |
10837
|
Berglunds snabbköp
|
92
|
0
|
591 |
10838
|
LINO-Delicateses
|
79
|
0
|
592 |
10839
|
Tradição Hipermercados
|
45
|
0
|
593 |
10840
|
LINO-Delicateses
|
16
|
0
|
594 |
10841
|
Suprêmes délices
|
111
|
0
|
595 |
10842
|
Tortuga Restaurante
|
52
|
0
|
596 |
10843
|
Victuailles en stock
|
4
|
0
|
597 |
10844
|
Piccolo und mehr
|
35
|
0
|
598 |
10845
|
QUICK-Stop
|
245
|
0
|
599 |
10846
|
Suprêmes délices
|
71
|
0
|
600 |
10847
|
Save-a-lot Markets
|
288
|
1
|
601 |
10848
|
Consolidated Holdings
|
33
|
0
|
602 |
10849
|
Königlich Essen
|
67
|
0
|
603 |
10850
|
Victuailles en stock
|
54
|
0
|
604 |
10851
|
Ricardo Adocicados
|
67
|
0
|
605 |
10852
|
Rattlesnake Canyon Grocery
|
71
|
0
|
606 |
10853
|
Blauer See Delikatessen
|
10
|
0
|
607 |
10854
|
Ernst Handel
|
165
|
0
|
608 |
10855
|
Old World Delicatessen
|
103
|
0
|
609 |
10856
|
Antonio Moreno Taquería
|
40
|
0
|
610 |
10857
|
Berglunds snabbköp
|
75
|
0
|
611 |
10858
|
La corne d'abondance
|
19
|
0
|
612 |
10859
|
Frankenversand
|
105
|
0
|
613 |
10860
|
France restauration
|
23
|
0
|
614 |
10861
|
White Clover Markets
|
140
|
0
|
615 |
10862
|
Lehmanns Marktstand
|
33
|
0
|
616 |
10863
|
HILARION-Abastos
|
32
|
0
|
617 |
10864
|
Around the Horn
|
19
|
0
|
618 |
10865
|
QUICK-Stop
|
140
|
0
|
619 |
10866
|
Berglunds snabbköp
|
67
|
0
|
620 |
10867
|
Lonesome Pine Restaurant
|
3
|
0
|
621 |
10868
|
Queen Cozinha
|
92
|
0
|
622 |
10869
|
Seven Seas Imports
|
120
|
0
|
623 |
10870
|
Wolski Zajazd
|
5
|
0
|
624 |
10871
|
Bon app'
|
78
|
0
|
625 |
10872
|
Godos Cocina Típica
|
66
|
0
|
626 |
10873
|
Wilman Kala
|
23
|
0
|
627 |
10874
|
Godos Cocina Típica
|
10
|
0
|
628 |
10875
|
Berglunds snabbköp
|
61
|
0
|
629 |
10876
|
Bon app'
|
41
|
0
|
630 |
10877
|
Ricardo Adocicados
|
55
|
0
|
631 |
10878
|
QUICK-Stop
|
20
|
0
|
632 |
10879
|
Wilman Kala
|
32
|
0
|
633 |
10880
|
Folk och fä HB
|
110
|
0
|
634 |
10881
|
Cactus Comidas para llevar
|
10
|
0
|
635 |
10882
|
Save-a-lot Markets
|
77
|
0
|
636 |
10883
|
Lonesome Pine Restaurant
|
8
|
0
|
637 |
10884
|
Let's Stop N Shop
|
73
|
0
|
638 |
10885
|
Suprêmes délices
|
87
|
0
|
639 |
10886
|
Hanari Carnes
|
145
|
0
|
640 |
10887
|
Galería del gastrónomo
|
5
|
0
|
641 |
10888
|
Godos Cocina Típica
|
38
|
0
|
642 |
10889
|
Rattlesnake Canyon Grocery
|
80
|
0
|
643 |
10890
|
Du monde entier
|
39
|
0
|
644 |
10891
|
Lehmanns Marktstand
|
15
|
0
|
645 |
10892
|
Maison Dewey
|
40
|
0
|
646 |
10893
|
Königlich Essen
|
119
|
0
|
647 |
10894
|
Save-a-lot Markets
|
198
|
0
|
648 |
10895
|
Ernst Handel
|
346
|
1
|
649 |
10896
|
Maison Dewey
|
31
|
0
|
650 |
10897
|
Hungry Owl All-Night Grocers
|
116
|
0
|
651 |
10898
|
Océano Atlántico Ltda.
|
5
|
0
|
652 |
10899
|
LILA-Supermercado
|
8
|
0
|
653 |
10900
|
Wellington Importadora
|
3
|
0
|
654 |
10901
|
HILARION-Abastos
|
60
|
0
|
655 |
10902
|
Folk och fä HB
|
36
|
0
|
656 |
10903
|
Hanari Carnes
|
81
|
0
|
657 |
10904
|
White Clover Markets
|
50
|
0
|
658 |
10905
|
Wellington Importadora
|
20
|
0
|
659 |
10906
|
Wolski Zajazd
|
15
|
0
|
660 |
10907
|
Spécialités du monde
|
14
|
0
|
661 |
10908
|
Reggiani Caseifici
|
34
|
0
|
662 |
10909
|
Santé Gourmet
|
32
|
0
|
663 |
10910
|
Wilman Kala
|
27
|
0
|
664 |
10911
|
Godos Cocina Típica
|
37
|
0
|
665 |
10912
|
Hungry Owl All-Night Grocers
|
100
|
0
|
666 |
10913
|
Queen Cozinha
|
85
|
0
|
667 |
10914
|
Queen Cozinha
|
25
|
0
|
668 |
10915
|
Tortuga Restaurante
|
50
|
0
|
669 |
10916
|
Rancho grande
|
32
|
0
|
670 |
10917
|
Romero y tomillo
|
11
|
0
|
671 |
10918
|
Bottom-Dollar Markets
|
85
|
0
|
672 |
10919
|
LINO-Delicateses
|
68
|
0
|
673 |
10920
|
Around the Horn
|
24
|
0
|
674 |
10921
|
Vaffeljernet
|
50
|
0
|
675 |
10922
|
Hanari Carnes
|
50
|
0
|
676 |
10923
|
La maison d'Asie
|
44
|
0
|
677 |
10924
|
Berglunds snabbköp
|
56
|
0
|
678 |
10925
|
Hanari Carnes
|
37
|
0
|
679 |
10926
|
Ana Trujillo Emparedados y helados
|
29
|
0
|
680 |
10927
|
La corne d'abondance
|
30
|
0
|
681 |
10928
|
Galería del gastrónomo
|
10
|
0
|
682 |
10929
|
Frankenversand
|
124
|
0
|
683 |
10930
|
Suprêmes délices
|
116
|
0
|
684 |
10931
|
Richter Supermarkt
|
72
|
0
|
685 |
10932
|
Bon app'
|
80
|
0
|
686 |
10933
|
Island Trading
|
32
|
0
|
687 |
10934
|
Lehmanns Marktstand
|
20
|
0
|
688 |
10935
|
Wellington Importadora
|
33
|
0
|
689 |
10936
|
Great Lakes Food Market
|
30
|
0
|
690 |
10937
|
Cactus Comidas para llevar
|
28
|
0
|
691 |
10938
|
QUICK-Stop
|
128
|
0
|
692 |
10939
|
Magazzini Alimentari Riuniti
|
50
|
0
|
693 |
10940
|
Bon app'
|
28
|
0
|
694 |
10941
|
Save-a-lot Markets
|
204
|
0
|
695 |
10942
|
Reggiani Caseifici
|
28
|
0
|
696 |
10943
|
B's Beverages
|
51
|
0
|
697 |
10944
|
Bottom-Dollar Markets
|
41
|
0
|
698 |
10945
|
Morgenstern Gesundkost
|
30
|
0
|
699 |
10946
|
Vaffeljernet
|
90
|
0
|
700 |
10947
|
B's Beverages
|
4
|
0
|
701 |
10948
|
Godos Cocina Típica
|
53
|
0
|
702 |
10949
|
Bottom-Dollar Markets
|
108
|
0
|
703 |
10950
|
Magazzini Alimentari Riuniti
|
5
|
0
|
704 |
10951
|
Richter Supermarkt
|
71
|
0
|
705 |
10952
|
Alfreds Futterkiste
|
18
|
0
|
706 |
10953
|
Around the Horn
|
100
|
0
|
707 |
10954
|
LINO-Delicateses
|
107
|
0
|
708 |
10955
|
Folk och fä HB
|
12
|
0
|
709 |
10956
|
Blauer See Delikatessen
|
34
|
0
|
710 |
10957
|
HILARION-Abastos
|
78
|
0
|
711 |
10958
|
Océano Atlántico Ltda.
|
31
|
0
|
712 |
10959
|
Gourmet Lanchonetes
|
20
|
0
|
713 |
10960
|
HILARION-Abastos
|
34
|
0
|
714 |
10961
|
Queen Cozinha
|
66
|
0
|
715 |
10962
|
QUICK-Stop
|
195
|
0
|
716 |
10963
|
Furia Bacalhau e Frutos do Mar
|
2
|
0
|
717 |
10964
|
Spécialités du monde
|
21
|
0
|
718 |
10965
|
Old World Delicatessen
|
16
|
0
|
719 |
10966
|
Chop-suey Chinese
|
32
|
0
|
720 |
10967
|
Toms Spezialitäten
|
52
|
0
|
721 |
10968
|
Ernst Handel
|
64
|
0
|
722 |
10969
|
Comércio Mineiro
|
9
|
0
|
723 |
10970
|
Bólido Comidas preparadas
|
40
|
0
|
724 |
10971
|
France restauration
|
14
|
0
|
725 |
10972
|
La corne d'abondance
|
13
|
0
|
726 |
10973
|
La corne d'abondance
|
21
|
0
|
727 |
10974
|
Split Rail Beer & Ale
|
10
|
0
|
728 |
10975
|
Bottom-Dollar Markets
|
26
|
0
|
729 |
10976
|
HILARION-Abastos
|
20
|
0
|
730 |
10977
|
Folk och fä HB
|
90
|
0
|
731 |
10978
|
Maison Dewey
|
76
|
0
|
732 |
10979
|
Ernst Handel
|
207
|
0
|
733 |
10980
|
Folk och fä HB
|
40
|
0
|
734 |
10981
|
Hanari Carnes
|
60
|
0
|
735 |
10982
|
Bottom-Dollar Markets
|
29
|
0
|
736 |
10983
|
Save-a-lot Markets
|
99
|
0
|
737 |
10984
|
Save-a-lot Markets
|
115
|
0
|
738 |
10985
|
Hungry Owl All-Night Grocers
|
79
|
0
|
739 |
10986
|
Océano Atlántico Ltda.
|
70
|
0
|
740 |
10987
|
Eastern Connection
|
86
|
0
|
741 |
10988
|
Rattlesnake Canyon Grocery
|
100
|
0
|
742 |
10989
|
Que Delícia
|
59
|
0
|
743 |
10990
|
Ernst Handel
|
256
|
1
|
744 |
10991
|
QUICK-Stop
|
160
|
0
|
745 |
10992
|
The Big Cheese
|
2
|
0
|
746 |
10993
|
Folk och fä HB
|
85
|
0
|
747 |
10994
|
Vaffeljernet
|
18
|
0
|
748 |
10995
|
Pericles Comidas clásicas
|
24
|
0
|
749 |
10996
|
QUICK-Stop
|
40
|
0
|
750 |
10997
|
LILA-Supermercado
|
90
|
0
|
751 |
10998
|
Wolski Zajazd
|
69
|
0
|
752 |
10999
|
Ottilies Käseladen
|
56
|
0
|
753 |
11000
|
Rattlesnake Canyon Grocery
|
85
|
0
|
754 |
11001
|
Folk och fä HB
|
116
|
0
|
755 |
11002
|
Save-a-lot Markets
|
135
|
0
|
756 |
11003
|
The Cracker Box
|
24
|
0
|
757 |
11004
|
Maison Dewey
|
12
|
0
|
758 |
11005
|
Wilman Kala
|
12
|
0
|
759 |
11006
|
Great Lakes Food Market
|
10
|
0
|
760 |
11007
|
Princesa Isabel Vinhos
|
54
|
0
|
761 |
11008
|
Ernst Handel
|
181
|
0
|
762 |
11009
|
Godos Cocina Típica
|
39
|
0
|
763 |
11010
|
Reggiani Caseifici
|
30
|
0
|
764 |
11011
|
Alfreds Futterkiste
|
60
|
0
|
765 |
11012
|
Frankenversand
|
146
|
0
|
766 |
11013
|
Romero y tomillo
|
36
|
0
|
767 |
11014
|
LINO-Delicateses
|
28
|
0
|
768 |
11015
|
Santé Gourmet
|
33
|
0
|
769 |
11016
|
Around the Horn
|
31
|
0
|
770 |
11017
|
Ernst Handel
|
165
|
0
|
771 |
11018
|
Lonesome Pine Restaurant
|
35
|
0
|
772 |
11019
|
Rancho grande
|
5
|
0
|
773 |
11020
|
Ottilies Käseladen
|
24
|
0
|
774 |
11021
|
QUICK-Stop
|
168
|
0
|
775 |
11022
|
Hanari Carnes
|
65
|
0
|
776 |
11023
|
B's Beverages
|
34
|
0
|
777 |
11024
|
Eastern Connection
|
113
|
0
|
778 |
11025
|
Wartian Herkku
|
30
|
0
|
779 |
11026
|
Franchi S.p.A.
|
18
|
0
|
780 |
11027
|
Bottom-Dollar Markets
|
51
|
0
|
781 |
11028
|
Königlich Essen
|
59
|
0
|
782 |
11029
|
Chop-suey Chinese
|
32
|
0
|
783 |
11030
|
Save-a-lot Markets
|
330
|
1
|
784 |
11031
|
Save-a-lot Markets
|
182
|
0
|
785 |
11032
|
White Clover Markets
|
90
|
0
|
786 |
11033
|
Richter Supermarkt
|
106
|
0
|
787 |
11034
|
Old World Delicatessen
|
33
|
0
|
788 |
11035
|
Suprêmes délices
|
110
|
0
|
789 |
11036
|
Drachenblut Delikatessen
|
37
|
0
|
790 |
11037
|
Godos Cocina Típica
|
4
|
0
|
791 |
11038
|
Suprêmes délices
|
37
|
0
|
792 |
11039
|
LINO-Delicateses
|
132
|
0
|
793 |
11040
|
Great Lakes Food Market
|
20
|
0
|
794 |
11041
|
Chop-suey Chinese
|
60
|
0
|
795 |
11042
|
Comércio Mineiro
|
19
|
0
|
796 |
11043
|
Spécialités du monde
|
10
|
0
|
797 |
11044
|
Wolski Zajazd
|
12
|
0
|
798 |
11045
|
Bottom-Dollar Markets
|
39
|
0
|
799 |
11046
|
Die Wandernde Kuh
|
53
|
0
|
800 |
11047
|
Eastern Connection
|
55
|
0
|
801 |
11048
|
Bottom-Dollar Markets
|
42
|
0
|
802 |
11049
|
Gourmet Lanchonetes
|
14
|
0
|
803 |
11050
|
Folk och fä HB
|
50
|
0
|
804 |
11051
|
La maison d'Asie
|
10
|
0
|
805 |
11052
|
Hanari Carnes
|
40
|
0
|
806 |
11053
|
Piccolo und mehr
|
80
|
0
|
807 |
11054
|
Cactus Comidas para llevar
|
30
|
0
|
808 |
11055
|
HILARION-Abastos
|
70
|
0
|
809 |
11056
|
Eastern Connection
|
125
|
0
|
810 |
11057
|
North/South
|
3
|
0
|
811 |
11058
|
Blauer See Delikatessen
|
28
|
0
|
812 |
11059
|
Ricardo Adocicados
|
77
|
0
|
813 |
11060
|
Franchi S.p.A.
|
14
|
0
|
814 |
11061
|
Great Lakes Food Market
|
15
|
0
|
815 |
11062
|
Reggiani Caseifici
|
22
|
0
|
816 |
11063
|
Hungry Owl All-Night Grocers
|
100
|
0
|
817 |
11064
|
Save-a-lot Markets
|
173
|
0
|
818 |
11065
|
LILA-Supermercado
|
24
|
0
|
819 |
11066
|
White Clover Markets
|
80
|
0
|
820 |
11067
|
Drachenblut Delikatessen
|
9
|
0
|
821 |
11068
|
Queen Cozinha
|
72
|
0
|
822 |
11069
|
Tortuga Restaurante
|
20
|
0
|
823 |
11070
|
Lehmanns Marktstand
|
110
|
0
|
824 |
11071
|
LILA-Supermercado
|
25
|
0
|
825 |
11072
|
Ernst Handel
|
200
|
0
|
826 |
11073
|
Pericles Comidas clásicas
|
30
|
0
|
827 |
11074
|
Simons bistro
|
14
|
0
|
828 |
11075
|
Richter Supermarkt
|
42
|
0
|
829 |
11076
|
Bon app'
|
50
|
0
|
830 |
11077
|
Rattlesnake Canyon Grocery
|
72
|
0
|
4. Usage of SUM to find cyclic sales pattern
SQL Server Query 4
WITH Months AS (
SELECT 1 AS Month
UNION ALL
SELECT Month + 1
FROM Months
WHERE Month < 12
),
MonthlySales AS (
SELECT
DATEPART(month, o.OrderDate) AS SaleMonth,
SUM(od.Quantity * od.UnitPrice) AS TotalSales
FROM Orders o
JOIN [Order Details] od ON o.OrderID = od.OrderID
WHERE YEAR(o.OrderDate) = 1996 -- Limit to a single year for simplicity
GROUP BY DATEPART(month, o.OrderDate)
),
SalesAnalysis AS (
SELECT
m.Month AS SaleMonth,
COALESCE(ms.TotalSales, 0) AS ActualSales, -- Use COALESCE to handle months with no sales
-- Calculate a cosine wave. Adjust amplitude and frequency as needed.
10000 * COS((m.Month * 2 * PI()) / 12) + 15000 AS ExpectedSales -- Example: Amplitude=10000, Period = 12 months, Vertical Shift = 15000
FROM Months m
LEFT JOIN MonthlySales ms ON m.Month = ms.SaleMonth
)
SELECT
SaleMonth,
ActualSales,
ExpectedSales,
(ActualSales - ExpectedSales) AS SalesDifference
FROM SalesAnalysis
ORDER BY SaleMonth;
Create SQL query with SqlQueryBuilder 4
var (sql4, parameters4) = new SqlQueryBuilder()
.WithCTETable(new Table("Months"), new SqlQueryBuilder().Select()
.Column(1, "Month")
.UnionAll(new SqlQueryBuilder().Select().Column(new ColumnArithmatic().Column("Month").ADD().Value(1), "Month"))
.From("Months")
.Where(new Where(new Column("Month").LessThan(12)))
)
.WithCTETable(new Table("MonthlySales"), new SqlQueryBuilder()
.Select()
.Column(new DATEPART(SqlDateInterval.month, new Column("o.OrderDate")), "SaleMonth")
.Column(new SUM(new ColumnArithmatic("od.Quantity").MULTIPLY("od.UnitPrice")), "TotalSales")
.From("Orders", "o")
.Join(new List<IJoin>()
{
new INNERJOIN().TableName(new Table("[Order Details]","od"))
.On(new Column("o.OrderID").Equale(new Column("od.OrderID")))
})
.Where(new Where(new YEAR(new Column("o.OrderDate")).Equale(1996)))
.GroupBy(new GroupBy(new DATEPART(SqlDateInterval.month, new Column("o.OrderDate"))))
)
.WithCTETable(new Table("SalesAnalysis"), new SqlQueryBuilder().Select()
.Column("m.Month", "SaleMonth")
.Column(new COALESCE(new Column("ms.TotalSales"), 0), "ActualSales")
.Column(new ColumnArithmatic(10000).MULTIPLY(new COS(new ColumnArithmatic().StartBracket("m.Month")
.MULTIPLY(2).MULTIPLY(new PI()).EndBracket().DIVIDE(12))).ADD(15000), "ExpectedSales")
.From("Months", "m")
.Join(new List<IJoin>()
{
new LEFTJOIN().TableName(new Table("MonthlySales","ms"))
.On(new Column("m.Month").Equale(new Column("ms.SaleMonth")))
})
)
.Select()
.Columns("SaleMonth", "ActualSales", "ExpectedSales")
.Column(new ColumnArithmatic("ActualSales").SUBTRACT("ExpectedSales"), "SalesDifference")
.From("SalesAnalysis")
.OrderBy(new OrderBy().SetColumnAscending("SaleMonth"))
.Build();
Query build by SqlQueryBuilder 4
WITH Months
AS (SELECT @pMAIN_2507200147313684940 AS Month
UNION ALL
SELECT Month + @pMAIN_2507200147313684941 AS Month
FROM Months
WHERE Month < @pMAIN_2507200147313684942),
MonthlySales
AS (SELECT DATEPART(month, o.OrderDate) AS SaleMonth,
SUM(od.Quantity * od.UnitPrice) AS TotalSales
FROM Orders AS o
INNER JOIN
[Order Details] AS od
ON o.OrderID = od.OrderID
WHERE YEAR(o.OrderDate) = @pMAIN_2507200147313684943
GROUP BY DATEPART(month, o.OrderDate)),
SalesAnalysis
AS (SELECT m.Month AS SaleMonth,
COALESCE (ms.TotalSales, @pMAIN_2507200147313684944) AS ActualSales,
@pMAIN_2507200147313684945 * COS((m.Month * @pMAIN_2507200147313684946 * PI()) / @pMAIN_2507200147313684947) + @pMAIN_2507200147313684948 AS ExpectedSales
FROM Months AS m
LEFT OUTER JOIN
MonthlySales AS ms
ON m.Month = ms.SaleMonth)
SELECT SaleMonth,
ActualSales,
ExpectedSales,
ActualSales - ExpectedSales AS SalesDifference
FROM SalesAnalysis
ORDER BY SaleMonth ASC;
Parameters (If used)
Name |
Value |
@pMAIN_2507200147313684940 |
1 |
@pMAIN_2507200147313684941 |
1 |
@pMAIN_2507200147313684942 |
12 |
@pMAIN_2507200147313684943 |
1996 |
@pMAIN_2507200147313684944 |
0 |
@pMAIN_2507200147313684945 |
10000 |
@pMAIN_2507200147313684946 |
2 |
@pMAIN_2507200147313684947 |
12 |
@pMAIN_2507200147313684948 |
15000 |
Query Results 4:
|
SaleMonth |
ActualSales |
ExpectedSales |
SalesDifference |
1 |
1
|
0
|
23660.25403784439
|
-23660.25403784439
|
2 |
2
|
0
|
20000
|
-20000
|
3 |
3
|
0
|
15000
|
-15000
|
4 |
4
|
0
|
10000.000000000002
|
-10000.000000000002
|
5 |
5
|
0
|
6339.745962155614
|
-6339.745962155614
|
6 |
6
|
0
|
5000
|
-5000
|
7 |
7
|
30192.1
|
6339.745962155612
|
23852.354037844387
|
8 |
8
|
26609.4
|
9999.999999999996
|
16609.400000000005
|
9 |
9
|
27636
|
14999.999999999998
|
12636.000000000002
|
10 |
10
|
41203.6
|
20000
|
21203.6
|
11 |
11
|
49704
|
23660.254037844385
|
26043.745962155615
|
12 |
12
|
50953.4
|
25000
|
25953.4
|