December 31, 2004 at 12:50 pm
Comments posted to this topic are about the content posted at http://www.sqlservercentral.com/columnists/dpoole/canyoucomput
January 11, 2005 at 4:47 am
Thanks!
January 11, 2005 at 5:44 am
Wow, what a thorough explaination! I was tring to explain these concepts to some colleagues over lunch the other day, and your article beats the snot out of my back-of-napkin diagrams!
Thanks!
January 11, 2005 at 6:37 am
Very nice. The graphics you took the time to do the "Alice's Restaurant" thing to really make this a very clear article on what Rollups and Cubes actually do. The graphics clearly demonstrate why you might want to use the Grouping function of a Rollup or Cube.
There's lot's of folks who have no idea what a "subtree cost" is, how to determine it, or what unit of measurement it is. Also, although very obvious from the graphics, simple example Selects for the isolation of subtotals and grandtotals would be very helpful for newbies. A very brief explanation of these two things would have made this a "six star" article.
Outstanding article overall! Thanks for sharing it with us.
--Jeff Moden
Change is inevitable... Change for the better is not.
January 12, 2005 at 6:43 am
You really did do a nice job on this article. Very complete description and nice use of visualizations to send home.
January 13, 2005 at 3:51 pm
Excellent article. I had heard of the terms before and had "one day" planned to read up on them thinking they sounded complicated. You made it sound easy - and as it turns out, it really is
THANKS
June 18, 2005 at 10:49 pm
I liked it very much. I would like to see more articles like this on the near future. My only "negative" comment is I was reading the article and "copy and paste" the source code and it has a lot typos, here is the code will run:
SELECT
Cust.country ,
Cat.CategoryName ,
Count(*) AS ProductsBought
FROM dbo.Customers AS Cust
INNER JOIN dbo.Orders AS Ord
ON Cust.CustomerId = Ord.CustomerId
INNER JOIN dbo.[Order Details] AS OrdDet
ON Ord.OrderId = OrdDet.OrderId
INNER JOIN dbo.Products AS Prod
ON OrdDet.ProductId = Prod.ProductId
INNER JOIN dbo.Categories AS Cat
ON Prod.CategoryId = Cat.CategoryId
GROUP BY
Cust.Country ,
Cat.CategoryName
WITH ROLLUP;
SELECT Cust.country ,
Cat.CategoryName ,
Count(*) AS ProductsBought
FROM dbo.Customers AS Cust
INNER JOIN dbo.Orders AS Ord
ON Cust.CustomerId = Ord.CustomerId
INNER JOIN dbo.[Order Details] AS OrdDet
ON Ord.OrderId = OrdDet.OrderId
INNER JOIN dbo.Products AS Prod
ON OrdDet.ProductId = Prod.ProductId
INNER JOIN dbo.Categories AS Cat
ON Prod.CategoryId = Cat.CategoryId
GROUP BY
Cust.Country ,
Cat.CategoryName
order by Cust.country;
GROUP BY clause.
SELECT
Cust.country ,
Cat.CategoryName ,
Count(*) AS ProductsBought,
GROUPING(Cust.country) AS SubtotalForCountries,
GROUPING(Cat.CategoryName) AS SubtotalForCategories
FROM dbo.Customers AS Cust
INNER JOIN dbo.Orders AS Ord
ON Cust.CustomerId = Ord.CustomerId
INNER JOIN dbo.[Order Details] AS OrdDet
ON Ord.OrderId = OrdDet.OrderId
INNER JOIN dbo.Products AS Prod
ON OrdDet.ProductId = Prod.ProductId
INNER JOIN dbo.Categories AS Cat
ON Prod.CategoryId = Cat.CategoryId
GROUP BY
Cust.Country ,
Cat.CategoryName
WITH CUBE ;
SELECT
Prod.ProductId ,
Prod.ProductName ,
Cat.CategoryName ,
Prod.UnitsInStock * Prod.UnitPrice AS StockValue
FROM dbo.Products AS Prod
INNER JOIN dbo.Categories AS Cat
ON Prod.CategoryId = Cat.CategoryId
ORDER BY
Cat.CategoryName
COMPUTE SUM(Prod.UnitsInStock * Prod.UnitPrice);
SELECT
Prod.ProductId ,
Prod.ProductName ,
Cat.CategoryName ,
Prod.UnitsInStock * Prod.UnitPrice AS StockValue
FROM dbo.Products AS Prod
INNER JOIN dbo.Categories AS Cat
ON Prod.CategoryId = Cat.CategoryId
ORDER BY
Cat.CategoryName
COMPUTE SUM(Prod.UnitsInStock * Prod.UnitPrice)
BY Cat.CategoryName;
SELECT
Prod.ProductId ,
Prod.ProductName ,
Cat.CategoryName ,
Prod.UnitsInStock * Prod.UnitPrice AS StockValue
FROM dbo.Products AS Prod
INNER JOIN dbo.Categories AS Cat
ON Prod.CategoryId = Cat.CategoryId
ORDER BY Cat.CategoryName
COMPUTE SUM(Prod.UnitsInStock * Prod.UnitPrice)
BY Cat.CategoryName
COMPUTE SUM(Prod.UnitsInStock * Prod.UnitPrice);
One more time.... Great article.
November 23, 2005 at 1:40 am
A very good explaination!
Al Pagcaliwangan B.S. ECE, B.S.EE
Viewing 8 posts - 1 through 7 (of 7 total)
You must be logged in to reply to this topic. Login to reply