Errata for Microsoft SQL Server 2012 High-Performance T-SQL Using Window Functions
The errata list is a list of errors and their corrections that were found after the product was released. If the error was corrected in a later version or reprint the date of the correction will be displayed in the column titled "Date Corrected".
The following errata were submitted by our customers and approved as valid errors by the author or editor.
Color key: Serious technical mistake Minor technical mistake Language or formatting error Typo Question Note Update
Version |
Location |
Description |
Submitted By |
Date submitted |
Date corrected |
PDF |
Page 70
1st script |
WITH C AS
(
SELECT testid, studentid, score,
RANK() OVER(PARTITION BY testid ORDER BY score) AS rk,
COUNT(*) OVER(PARTITION BY testid) AS nr
FROM Stats.Scores
)
SELECT testid, studentid, score,
1.0 * (rk - 1) / (nr - 1) AS percentrank,
1.0 * (SELECT COALESCE(MIN(C2.rk) - 1, C1.nr)
FROM C AS C2
WHERE C2.rk > C1.rk) / nr AS cumedist
FROM C AS C1;
WHERE clause should be changed like following
to check rk in same partition:
WHERE C2.rk > C1.rk AND C2.testid = C1.testid
Note from the Author or Editor: Nice catch!
The query in page 70 should be changed to the following:
WITH C AS
(
SELECT testid, studentid, score,
RANK() OVER(PARTITION BY testid ORDER BY score) AS rk,
COUNT(*) OVER(PARTITION BY testid) AS nr
FROM Stats.Scores
)
SELECT testid, studentid, score,
1.0 * (rk - 1) / (nr - 1) AS percentrank,
1.0 * (SELECT COALESCE(MIN(C2.rk) - 1, C1.nr)
FROM C AS C2
WHERE C2.testid = C1.testid
AND C2.rk > C1.rk) / nr AS cumedist
FROM C AS C1;
Description of change: WHERE clause in subquery was revised from:
WHERE C2.rk > C1.rk
To:
WHERE C2.testid = C1.testid
AND C2.rk > C1.rk
Thanks for reporting this!
Cheers,
Itzik
|
Anonymous |
Aug 12, 2013 |
|
Printed, PDF |
Page 1
N/A |
You can find the book's companion website here: http://tsql.solidq.com/books/windowfunctions2012/.
|
Itzik Ben-Gan |
Jan 05, 2013 |
|
Printed |
Page 20
Second paragraph, Second sentence |
Currently: "Another way to look at it is that inf case explicit partitioning wasn't specified, the default partitioning is to consider the entire result set of the query as one partition."
Should be: "Another way to look at it is that in case explicit partitioning wasn't specified, the default partitioning is to consider the entire result set of the query as one partition."
|
Anonymous |
Jun 07, 2012 |
|
Printed |
Page 107
two sentences before query: |
Currently: "So simply adding a presentation ORDER BY clause with tranid DESC to our last query removes the need for a Sort iterator. Here's the revised query:"
Should be: "So simply adding a presentation ORDER BY clause with actid DESC to our last query removes the need for a Sort iterator. Here's the revised query:"
|
Anonymous |
Jun 07, 2012 |
|