14 - Organizational Intelligence

An international hotel chain has asked you to design a multidimensional database for its marketing department. What identifier and variable dimensions would you select?

Apply the basic prompts outlined in the book.

Identifiers When Arrival date and and time
Departure date and and time
Season level (high, |medium, low)
Weather
Where Country
Region
City
What Room type
Hotel class (stars)
How Reservation channel (phone, Web, mobile, fax)
Variables Outcomes Duration of stay
Room revenue
Meals revenue
Amenities revenue

Compute total payments by country without and with ROLLUP

SELECT DISTINCT country, FORMAT(SUM(amount),0) AS Payments FROM Customers, Payments
    WHERE Customers.customerNumber = Payments.customerNumber
    GROUP BY  country;
SELECT country, FORMAT(SUM(amount),0) AS Payments FROM Customers, Payments
    WHERE Customers.customerNumber = Payments.customerNumber
    GROUP BY  country WITH ROLLUP;

Compute total payments by country and year without and with ROLLUP

SELECT DISTINCT country, YEAR(paymentDate) AS year, FORMAT(SUM(amount),0) AS Payments
    FROM Customers, Payments
    WHERE Customers.customerNumber = Payments.customerNumber
    GROUP BY  country, year;
SELECT country, YEAR(paymentDate) AS year, FORMAT(SUM(amount),0) AS Payments
FROM Customers, Payments
WHERE Customers.customerNumber = Payments.customerNumber
GROUP BY  country, year WITH ROLLUP;

Compute total value of orders by country and product line without and with ROLLUP

SELECT DISTINCT country AS 'Country', ProductLines.productLine, FORMAT(sum(quantityOrdered*priceEach),0) AS 'Order value'
    FROM Customers, Orders, OrderDetails, Products, ProductLines
    WHERE Customers.customerNumber = Orders.customerNumber
    AND Orders.orderNumber = OrderDetails.orderNumber
    AND OrderDetails.productCode = Products.productCode
    AND Products.productLine = ProductLines.productLine
    GROUP BY  country, ProductLines.productLine, 'Order value';
SELECT country AS 'Country', ProductLines.productLine, FORMAT(sum(quantityOrdered*priceEach),0) AS 'Order value'
FROM Customers, Orders, OrderDetails, Products, ProductLines
WHERE Customers.customerNumber = Orders.customerNumber
AND Orders.orderNumber = OrderDetails.orderNumber
AND OrderDetails.productCode = Products.productCode
AND Products.productLine = ProductLines.productLine
GROUP BY  country, ProductLines.productLine, 'Order value' WITH ROLLUP;