Book Image

Data Analysis Using SQL and Excel - Second Edition

By : Gordon S. S. Linoff
Book Image

Data Analysis Using SQL and Excel - Second Edition

By: Gordon S. S. Linoff

Overview of this book

Data Analysis Using SQL and Excel, 2nd Edition shows you how to leverage the two most popular tools for data query and analysis—SQL and Excel—to perform sophisticated data analysis without the need for complex and expensive data mining tools. Written by a leading expert on business data mining, this book shows you how to extract useful business information from relational databases. You'll learn the fundamental techniques before moving into the "where" and "why" of each analysis, and then learn how to design and perform these analyses using SQL and Excel. Examples include SQL and Excel code, and the appendix shows how non-standard constructs are implemented in other major databases, including Oracle and IBM DB2/UDB. The companion website includes datasets and Excel spreadsheets, and the book provides hints, warnings, and technical asides to help you every step of the way. Data Analysis Using SQL and Excel, 2nd Edition shows you how to perform a wide range of sophisticated analyses using these simple tools, sparing you the significant expense of proprietary data mining tools like SAS.
Table of Contents (18 chapters)
Free Chapter
1
Foreword
17
EULA

Product Geographic Distribution

As we saw in Chapter 4, geography is a key dimension for analysis. This is true at the product level as well. This section investigates some interactions between geography and products.

Most Common Product by State

One common question is what “thing” is most frequently associated with something else, such as the most common product in each state. The easiest approach to this type of question is to use window functions, particularly ROW_NUMBER():

SELECT sp.State, sp.ProductId, cnt, p.GroupName
FROM (SELECT o.State, ol.ProductId, COUNT(*) as cnt,
             ROW_NUMBER() OVER (PARTITION BY o.State
                                ORDER BY COUNT(*) DESC,
                                         ol.ProductId) as seqnum
      FROM Orders o JOIN
           OrderLines ol
           ON o.OrderId = ol.OrderId
      GROUP BY o.State, ol.ProductId
     ) sp JOIN
     Products p
     ON sp.ProductId = p.ProductId
WHERE seqnum = 1;

The COUNT(*) in the...