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