100% found this document useful (2 votes)
22 views65 pages

Expert T-SQL Window Functions in SQL Server 2019: The Hidden Secret To Fast Analytic and Reporting Queries Kathi Kellenberger

Hidden

Uploaded by

jarvioeynon
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (2 votes)
22 views65 pages

Expert T-SQL Window Functions in SQL Server 2019: The Hidden Secret To Fast Analytic and Reporting Queries Kathi Kellenberger

Hidden

Uploaded by

jarvioeynon
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 65

Experience Seamless Full Ebook Downloads for Every Genre at textbookfull.

com

Expert T-SQL Window Functions in SQL Server 2019:


The Hidden Secret to Fast Analytic and Reporting
Queries Kathi Kellenberger

https://textbookfull.com/product/expert-t-sql-window-
functions-in-sql-server-2019-the-hidden-secret-to-fast-
analytic-and-reporting-queries-kathi-kellenberger/

OR CLICK BUTTON

DOWNLOAD NOW

Explore and download more ebook at https://textbookfull.com


Recommended digital products (PDF, EPUB, MOBI) that
you can download immediately if you are interested.

Expert SQL Server Transactions and Locking: Concurrency


Internals for SQL Server Practitioners 1st Edition Dmitri
Korotkevitch
https://textbookfull.com/product/expert-sql-server-transactions-and-
locking-concurrency-internals-for-sql-server-practitioners-1st-
edition-dmitri-korotkevitch/
textboxfull.com

Expert SQL Server In-Memory OLTP 2nd Edition Dmitri


Korotkevitch

https://textbookfull.com/product/expert-sql-server-in-memory-oltp-2nd-
edition-dmitri-korotkevitch/

textboxfull.com

Query Store for SQL Server 2019: Identify and Fix Poorly
Performing Queries 1st Edition Tracy Boggiano

https://textbookfull.com/product/query-store-for-sql-
server-2019-identify-and-fix-poorly-performing-queries-1st-edition-
tracy-boggiano/
textboxfull.com

Expert Performance Indexing in SQL Server 2019: Toward


Faster Results and Lower Maintenance 3rd Edition Jason
Strate
https://textbookfull.com/product/expert-performance-indexing-in-sql-
server-2019-toward-faster-results-and-lower-maintenance-3rd-edition-
jason-strate/
textboxfull.com
SQL Server Execution Plans For SQL Server 2008 through to
2017 and Azure SQL Database 3rd Edition Grant Fritchey

https://textbookfull.com/product/sql-server-execution-plans-for-sql-
server-2008-through-to-2017-and-azure-sql-database-3rd-edition-grant-
fritchey/
textboxfull.com

Expert Scripting and Automation for SQL Server DBAs


Springerlink (Online Service)

https://textbookfull.com/product/expert-scripting-and-automation-for-
sql-server-dbas-springerlink-online-service/

textboxfull.com

Beginning SQL Queries From Novice to Professional Clare


Churcher

https://textbookfull.com/product/beginning-sql-queries-from-novice-to-
professional-clare-churcher/

textboxfull.com

Microsoft SQL Server 2019: A Beginner’s Guide Dusan


Petkovic

https://textbookfull.com/product/microsoft-sql-
server-2019-a-beginners-guide-dusan-petkovic/

textboxfull.com

SQL Server Internals In Memory OLTP Inside the SQL Server


2016 Hekaton Engine 2nd Edition Kalen Delaney

https://textbookfull.com/product/sql-server-internals-in-memory-oltp-
inside-the-sql-server-2016-hekaton-engine-2nd-edition-kalen-delaney/

textboxfull.com
Expert T-SQL
Window Functions
in SQL Server 2019
The Hidden Secret to Fast Analytic and
Reporting Queries

Second Edition

Kathi Kellenberger
Clayton Groom
Ed Pollack
Expert T-SQL Window
Functions in
SQL Server 2019
The Hidden Secret to Fast Analytic
and Reporting Queries
Second Edition

Kathi Kellenberger
Clayton Groom
Ed Pollack
Expert T-SQL Window Functions in SQL Server 2019
Kathi Kellenberger Clayton Groom
Edwardsville, IL, USA Smithton, IL, USA
Ed Pollack
Albany, NY, USA

ISBN-13 (pbk): 978-1-4842-5196-6 ISBN-13 (electronic): 978-1-4842-5197-3


https://doi.org/10.1007/978-1-4842-5197-3

Copyright © 2019 by Kathi Kellenberger, Clayton Groom, and Ed Pollack


This work is subject to copyright. All rights are reserved by the Publisher, whether the whole or part of the
material is concerned, specifically the rights of translation, reprinting, reuse of illustrations, recitation,
broadcasting, reproduction on microfilms or in any other physical way, and transmission or information
storage and retrieval, electronic adaptation, computer software, or by similar or dissimilar methodology now
known or hereafter developed.
Trademarked names, logos, and images may appear in this book. Rather than use a trademark symbol with
every occurrence of a trademarked name, logo, or image we use the names, logos, and images only in an
editorial fashion and to the benefit of the trademark owner, with no intention of infringement of the
trademark.
The use in this publication of trade names, trademarks, service marks, and similar terms, even if they are not
identified as such, is not to be taken as an expression of opinion as to whether or not they are subject to
proprietary rights.
While the advice and information in this book are believed to be true and accurate at the date of publication,
neither the authors nor the editors nor the publisher can accept any legal responsibility for any errors or
omissions that may be made. The publisher makes no warranty, express or implied, with respect to the
material contained herein.
Managing Director, Apress Media LLC: Welmoed Spahr
Acquisitions Editor: Jonathan Gennick
Development Editor: Laura Berendson
Coordinating Editor: Jill Balzano
Cover image designed by Freepik (www.freepik.com)
Distributed to the book trade worldwide by Springer Science+Business Media New York, 233 Spring Street,
6th Floor, New York, NY 10013. Phone 1-800-SPRINGER, fax (201) 348-4505, e-mail orders-ny@springer-
sbm.com, or visit www.springeronline.com. Apress Media, LLC is a California LLC and the sole member
(owner) is Springer Science + Business Media Finance Inc (SSBM Finance Inc). SSBM Finance Inc is a
Delaware corporation.
For information on translations, please e-mail [email protected], or visit http://www.apress.com/
rights-permissions.
Apress titles may be purchased in bulk for academic, corporate, or promotional use. eBook versions and
licenses are also available for most titles. For more information, reference our Print and eBook Bulk Sales
web page at http://www.apress.com/bulk-sales.
Any source code or other supplementary material referenced by the author in this book is available to
readers on GitHub via the book's product page, located at www.apress.com/9781484251966. For more
detailed information, please visit http://www.apress.com/source-code.
Printed on acid-free paper
This book is dedicated to the memory of Larry Toothman.
Table of Contents
About the Authors���������������������������������������������������������������������������������������������������� ix

About the Technical Reviewer��������������������������������������������������������������������������������� xi


Foreword��������������������������������������������������������������������������������������������������������������� xiii

Acknowledgments���������������������������������������������������������������������������������������������������xv

Introduction�����������������������������������������������������������������������������������������������������������xvii

Chapter 1: Looking Through the Window����������������������������������������������������������������� 1


Discovering Window Functions����������������������������������������������������������������������������������������������������� 2
Thinking About the Window���������������������������������������������������������������������������������������������������������� 4
Understanding the OVER Clause��������������������������������������������������������������������������������������������������� 6
Dividing Windows with Partitions����������������������������������������������������������������������������������������������� 15
Uncovering Special Case Windows��������������������������������������������������������������������������������������������� 16
Summary������������������������������������������������������������������������������������������������������������������������������������ 19

Chapter 2: Discovering Ranking Functions������������������������������������������������������������ 21


Using ROW_NUMBER������������������������������������������������������������������������������������������������������������������ 21
Understanding RANK and DENSE_RANK������������������������������������������������������������������������������������� 26
Dividing Data with NTILE������������������������������������������������������������������������������������������������������������� 27
Solving Queries with Ranking Functions������������������������������������������������������������������������������������ 30
Deduplicating Data���������������������������������������������������������������������������������������������������������������� 31
Finding the First N Rows of Every Group������������������������������������������������������������������������������� 33
Creating a Tally Table������������������������������������������������������������������������������������������������������������� 37
Solving the Bonus Problem��������������������������������������������������������������������������������������������������� 38
Summary������������������������������������������������������������������������������������������������������������������������������������ 41

v
Table of Contents

Chapter 3: Summarizing with Window Aggregates������������������������������������������������ 43


Using Window Aggregates���������������������������������������������������������������������������������������������������������� 43
Adding Window Aggregates to Aggregate Queries���������������������������������������������������������������������� 48
Using Window Aggregates to Solve Common Queries���������������������������������������������������������������� 52
The Percent of Sales Problem����������������������������������������������������������������������������������������������� 52
The Partitioned Table Problem����������������������������������������������������������������������������������������������� 53
Creating Custom Window Aggregate Functions�������������������������������������������������������������������������� 57
Summary������������������������������������������������������������������������������������������������������������������������������������ 60

Chapter 4: Calculating Running and Moving Aggregates��������������������������������������� 61


Adding ORDER BY to Window Aggregates����������������������������������������������������������������������������������� 61
Calculating Moving Totals and Averages������������������������������������������������������������������������������������� 63
Solving Queries Using Accumulating Aggregates����������������������������������������������������������������������� 67
The Last Good Value Problem������������������������������������������������������������������������������������������������ 67
The Subscription Problem����������������������������������������������������������������������������������������������������� 70
Summary������������������������������������������������������������������������������������������������������������������������������������ 74

Chapter 5: Adding Frames to the Window�������������������������������������������������������������� 75


Understanding Framing�������������������������������������������������������������������������������������������������������������� 75
Applying Frames to Running and Moving Aggregates���������������������������������������������������������������� 79
Understanding the Logical Difference Between ROWS and RANGE�������������������������������������������� 82
Summary������������������������������������������������������������������������������������������������������������������������������������ 85

Chapter 6: Taking a Peek at Another Row�������������������������������������������������������������� 87


Understanding LAG and LEAD����������������������������������������������������������������������������������������������������� 87
Understanding FIRST_VALUE and LAST_VALUE�������������������������������������������������������������������������� 92
Using the Offset Functions to Solve Queries������������������������������������������������������������������������������� 94
The Year-Over-Year Growth Calculation��������������������������������������������������������������������������������� 94
The Timecard Problem����������������������������������������������������������������������������������������������������������� 96
Summary������������������������������������������������������������������������������������������������������������������������������������ 98

vi
Table of Contents

Chapter 7: Understanding Statistical Functions����������������������������������������������������� 99


Using PERCENT_RANK and CUME_DIST������������������������������������������������������������������������������������� 99
Using PERCENTILE_CONT and PERCENTILE_DISC�������������������������������������������������������������������� 103
Comparing Statistical Functions to Older Methods������������������������������������������������������������������� 107
Summary���������������������������������������������������������������������������������������������������������������������������������� 111

Chapter 8: Tuning for Better Performance������������������������������������������������������������ 113


Using Execution Plans��������������������������������������������������������������������������������������������������������������� 113
Using STATISTICS IO������������������������������������������������������������������������������������������������������������������ 119
Indexing to Improve the Performance of Window Functions���������������������������������������������������� 121
Framing for Performance���������������������������������������������������������������������������������������������������������� 125
Taking Advantage of Batch Mode on Rowstore������������������������������������������������������������������������� 129
Measuring Time Comparisons��������������������������������������������������������������������������������������������������� 134
Cleaning Up the Database��������������������������������������������������������������������������������������������������������� 139
Summary���������������������������������������������������������������������������������������������������������������������������������� 139

Chapter 9: Hitting a Home Run with Gaps, Islands, and Streaks�������������������������� 141
The Classic Gaps/Islands Problem�������������������������������������������������������������������������������������������� 142
Finding Islands�������������������������������������������������������������������������������������������������������������������� 143
Finding Gaps������������������������������������������������������������������������������������������������������������������������ 145
Limitations and Notes���������������������������������������������������������������������������������������������������������� 146
Data Clusters����������������������������������������������������������������������������������������������������������������������������� 147
Tracking Streaks����������������������������������������������������������������������������������������������������������������������� 153
Winning and Losing Streaks������������������������������������������������������������������������������������������������ 154
Streaks Across Partitioned Data Sets���������������������������������������������������������������������������������� 158
Data Quality������������������������������������������������������������������������������������������������������������������������������� 168
NULL������������������������������������������������������������������������������������������������������������������������������������ 169
Unexpected or Invalid Values����������������������������������������������������������������������������������������������� 170
Duplicate Data��������������������������������������������������������������������������������������������������������������������� 170
Performance����������������������������������������������������������������������������������������������������������������������������� 171
Summary���������������������������������������������������������������������������������������������������������������������������������� 172

vii
Table of Contents

Chapter 10: Time Range Calculations������������������������������������������������������������������� 175


Percent of Parent���������������������������������������������������������������������������������������������������������������������� 176
Period-to-Date Calculations������������������������������������������������������������������������������������������������������ 181
Averages and Moving Averages������������������������������������������������������������������������������������������������ 184
Handling Gaps in Date Ranges�������������������������������������������������������������������������������������������� 184
Same Period Prior Year�������������������������������������������������������������������������������������������������������� 188
Growth and Percent Growth������������������������������������������������������������������������������������������������ 190
Summary���������������������������������������������������������������������������������������������������������������������������������� 193

Chapter 11: Time Trend Calculations�������������������������������������������������������������������� 195


Moving Totals and Moving Averages����������������������������������������������������������������������������������������� 195
Ensuring Sets Are Complete������������������������������������������������������������������������������������������������ 196
Rate of Change�������������������������������������������������������������������������������������������������������������������� 202
Pareto Principle������������������������������������������������������������������������������������������������������������������� 204
Summary���������������������������������������������������������������������������������������������������������������������������������� 208

Index��������������������������������������������������������������������������������������������������������������������� 209

viii
About the Authors
Kathi Kellenberger is a data platform MVP and the editor
of Simple Talk at Redgate Software. She has worked with
SQL Server for over 20 years. She is also coleader of the PASS
Women in Technology Virtual Group and an instructor at
LaunchCode. In her spare time, Kathi enjoys spending time
with family and friends, singing, and cycling.

Clayton Groom is a data warehouse and analytics


consultant at Clayton Groom, LLC. He has worked with
SQL Server for 25 years. His expertise lies in designing and
building data warehouse and analytic solutions on the
Microsoft technology stack, including Power BI, SQL Server,
Analysis Services, Reporting Services, and Excel.

Ed Pollack has over 20 years of experience in database


and systems administration and architecture, developing a
passion for performance optimization and making things go
faster. He has spoken at many SQL Saturdays, 24 Hours of
PASS, and PASS Summits and has coordinated SQL Saturday
Albany since its inception in 2014.

ix
About the Technical Reviewer
Rodney Landrum went to school to be a poet and a writer.
And then he graduated, so that dream was crushed. He
followed another path, which was to become a professional
in the fun-filled world of information technology. He has
worked as a systems engineer, UNIX and network admin,
data analyst, client services director, and finally as a
database administrator. The old hankering to put words on
paper, while paper still existed, got the best of him, and in
2000 he began writing technical articles, some creative and
humorous, some quite the opposite. In 2010, he wrote SQL Server Tacklebox, a title
his editor disdained, but a book closest to the true creative potential he sought; he still
yearned to do a full book without a single screenshot, which he accomplished in 2019
with his first novel, Chronicles of Shameus. He currently works from his castle office in
Pensacola, FL, as a senior DBA consultant for Ntirety, a division of Hostway/HOSTING.

xi
Foreword
SQL was developed in the 1970s and became standardized through ANSI-approved
committees as a formal standard starting in 1986.1 Today in 2019, SQL has become the
most widely used declarative language. Along the way, window functions have come
to be an important part of that standard. ANSI does not make standards but plays an
important role in documenting and preserving them. The individual software vendors
voluntarily decide to comply, and it’s the work of the authors of books like this one to
explain SQL use in practical terms.
In my own career in data science and advanced analytics, window functions have
been an important part of several key projects in the past few years. Several years ago, I
made a YouTube video for a user group based on the earlier edition of this book. Since
then, as a career architect at Microsoft, I have advised the application for data science.
In one project, the input of about 20 features was not yielding adequate results: using
window functions, a team under my leadership (and yes, direct coding) quickly grew
that number to over 1,000. More than numeric growth, the accuracy rates improved, and
on the business story, the organization is saving millions of dollars annually for their
question. In the past month, I have encountered an unrelated new project, and a similar
story is there: a time-series type of data set and an opportunity to grow from under 20
features to a number much larger.
One wonders whether automated machine learning technologies would make
such combinations on their own, and I’m skeptical. Making a robust set of features
from window functions requires not just time-series considerations but also clustering
knowledge based on knowing the data domain. Even if automated technologies make
great progress in this topic, I anticipate the need for any data scientist to have simple
knowledge of these functions for the more typical data science investigation which has
only a few features and low number of observations.
SQL is central to on-premise and cloud database technologies – and in the data
science world, many use Apache Spark (part of SQL Server 2019 and so many other data
technologies). This reach into advanced analytics is yet another reason why this topic is

1
See https://blog.ansi.org/2018/10/sql-standard-iso-iec-9075-2016-ansi-x3-135/

xiii
Foreword

an expert-level subject in the SQL language. The mainstream applications extend from
any business analytics SQL query and even into supporting advanced analytics and
machine learning algorithms.
Over the years, it’s been an honor to individually know Kathi Kellenberger and
Clayton Groom as respected peers and professionals and to see how they have each
become important leaders to the technical user community through many presentations
(for which they typically volunteer their own time) and through the creation and now
revision of this book. In this revision, Ed Pollack has applied material on baseball
statistics, illustrating that not every time series is about money. It’s not enough to have a
standard written, but one needs to have expert coaches to explain how these functions
describe an approach for business analytics. This book has rich examples and altogether
provides a clear path into one of the most mathematically complex and yet practically
useful aspects of the SQL language.

Mark Tabladillo, Ph.D.


Cloud Solution Architect, Microsoft

xiv
Acknowledgments
The first edition of this book would not have been written except for the suggestion
of one of my friends in the data platform community, Larry Toothman. Sadly, Larry
passed away shortly after the book was published and before I could get a copy to him.
Larry was just getting started with presenting at events and being more involved in the
community during the last couple of years of his life. Who knows what he might have
accomplished if things had turned out differently. Thanks to Larry’s inspiration, people
around the world will learn about windowing functions.
They say it takes a village to raise a child, and the same might be true for a book. I
would like to thank Jonathan Gennick and Jill Balzano for their help and guidance. There
are probably many people at Apress who had a hand in this project that I’ll never meet,
and I would like to thank them as well.
Clayton Groom and Ed Pollack each wrote about their real-world experience using
windowing functions. In each case, the idea for their chapter came from my running
into each of them at user group meetings and just talking about my project. Their
contributions definitely make this a better and more enjoyable book for you.
Thanks to Rodney Landrum for doing a great job on the technical review and to Mark
Tabladillo for the wonderful foreword.
Thank you to my family, especially my husband, Dennis, who takes care of just
about everything around the house. He makes my life so much easier when I take on big
projects like this.
Finally, thank you dear reader for learning about windowing functions from this
book. I hope that you enjoy it and can apply the things you learn right away. I would love
to hear from you at events, so don’t be shy!

xv
Introduction
Several years ago, I would create a user group presentation for each new version of SQL
Server about the new T-SQL features. There was so much to say in 2012 that I decided to
build a presentation on just the windowing functions introduced that year. Eventually,
I had so much material that it turned into two sessions. Over the years, I have probably
presented this information at least 50 times at events around the United States and the
United Kingdom. Despite that, most people still are not using windowing functions
because they haven’t heard about them or do not realize the benefits.

What’s in This Book?


This book covers each type of windowing function beginning with the ranking functions
introduced with SQL Server 2005 through the statistical functions introduced in 2012.
Each chapter explains how to use the functions along with any options and provides
a few simple examples of how to use them. Unfortunately, the last time that Microsoft
added any new windowing functions was 2012, but there have been some performance
improvements more recently. One chapter is dedicated to the performance of
windowing functions.
Finally, the last two chapters in the book cover some real-world examples. In
Chapter 9, you’ll learn how to analyze a large data set, over 100 years of baseball
statistics. Chapters 10 and 11 show how windowing functions can be used in data
warehouse calculations instead of building a cube.

I ntended Audience
This book is meant for people who already have good T-SQL skills. They know how to
join tables, use subqueries and CTEs, and write aggregate queries. Despite these skills,
they occasionally run into problems that are not easy to solve in a set-based manner.
Without windowing functions, some of these problems can only be solved by using

xvii
Introduction

cursors or expensive triangular joins. By using the concepts taught in this book, your
T-SQL skills will improve to the next level. Once you start using windowing functions,
you’ll find even more reasons to learn them.

Contacting the Author


Great care was taken to ensure that the information presented is correct, but sometimes
readers come up with a better way to write a query or find an error. You can contact me
at [email protected] with any comments or questions.

xviii
CHAPTER 1

Looking Through
the Window
SQL Server is a powerful database platform with a versatile query language called
T-SQL. The most exciting T-SQL enhancement over the years, in my opinion, is the
window functions. Window functions enable you to solve query problems in new, easier
ways and with better performance most of the time over traditional techniques. They
are a great tool for analytics. You may hear these called “windowing” or “windowed”
functions as well. The three terms are synonymous when talking about this feature.
After the release of SQL Server 2000, SQL Server enthusiasts waited 5 long years for
the next version of SQL Server to arrive. Microsoft delivered an entirely new product
with SQL Server 2005. This version brought SQL Server Management Studio, SQL
Server Integration Services, snapshot isolation, and database mirroring. Microsoft also
enhanced T-SQL with many great features, such as common table expressions (CTEs).
The most exciting T-SQL enhancement of all with 2005 was the introduction of window
functions.
That was just the beginning. Window functions are part of the standard ANSI
SQL specification beginning with ANSI SQL2003. More functionality according to the
standard was released with version 2012 of SQL Server. In 2019, Microsoft gave some of
the window functions a performance boost with batch mode processing, a feature once
reserved for column store indexes. You’ll see how this performance feature works in
Chapter 8. Even now, the functionality falls short of the entire specification, so there is
more to look forward to in the future.
This chapter provides a first look at two T-SQL window functions, LAG and
ROW_NUMBER. You will learn just what the window is and how to define it with the OVER
clause. You will also learn how to divide the windows into smaller sections called
partitions.

1
© Kathi Kellenberger, Clayton Groom, and Ed Pollack 2019
K. Kellenberger et al., Expert T-SQL Window Functions in SQL Server 2019,
https://doi.org/10.1007/978-1-4842-5197-3_1
Chapter 1 Looking Through the Window

Discovering Window Functions


Window functions do not let you do anything that was impossible to do with earlier
functionality, and they have nothing to do with the Microsoft Windows API. Using
previously available methods, such as self-joins, correlated subqueries, and cursors, you
can solve just about any T-SQL problem if you work at it long and hard enough. The main
benefit of window functions is the ease with which you can solve these tricky queries.
Most of the time, you also realize a big boost in performance over the older methods.
You can often use a window function to change a solution involving many statements or
subqueries to one easier statement.
I like to divide window functions into several categories that do not exactly match
up with the way Microsoft defines them: ranking functions, window aggregates,
accumulating window aggregates, offset functions, and statistical functions. (Microsoft
refers to the four offset and four statistical functions as “analytic” functions.) You can
use these functions to assign a rank to each row, calculate summary values without
grouping, calculate running totals, include columns from different rows in your results,
and calculate percentages over a group. You’ll learn about these functions as you read
this book.
My favorite T-SQL function which also happens to be a window function is called
LAG. It is one of the offset functions, which you will learn about in Chapter 6. LAG allows
you to include columns from different rows in your results. Using LAG is easier and
performs better than older methods that do the same thing.
Within the same year (just a few months apart), two different people approached
me for help with essentially the same problem: using data from the stock market, how
can one compare the closing price of a stock from one day to the next? The traditional
solution requires that each row of the data be joined to the prior row to get the closing
price from the previous day. By using the LAG function, the solution is not only simpler to
write, it also performs much better.

Note If you would like to follow along with this example, a sample script to
create the StockAnalysisDemo database and generated stock market data can be
found along with the code for this chapter on the Apress site.

For a quick look at how to solve this problem first by using one of the traditional
methods and then by using LAG, review and run Listing 1-1.
2
Chapter 1 Looking Through the Window

Listing 1-1. Two Approaches to Solving the Stock Market Problem

USE StockAnalysisDemo;
GO
--1-1.1 Using a subquery
SELECT TickerSymbol, TradeDate, ClosePrice,
    (SELECT TOP(1) ClosePrice
    FROM StockHistory AS SQ
    WHERE SQ.TickerSymbol  = OQ.TickerSymbol
        AND SQ.TradeDate < OQ.TradeDate
    ORDER BY TradeDate DESC) AS PrevClosePrice
FROM StockHistory AS OQ
ORDER BY TickerSymbol, TradeDate;

--1-1.2 Using LAG


SELECT TickerSymbol, TradeDate, ClosePrice,
    LAG(ClosePrice) OVER(PARTITION BY TickerSymbol
           ORDER BY TradeDate) AS PrevClosePrice
FROM StockHistory
ORDER BY TickerSymbol, TradeDate;

The partial results are shown in Figure 1-1. Since the data is randomly generated, the
values of ClosePrice and PrevClosePrice in the image will not match your values. Query
1 uses a correlated subquery, the old method, to select one ClosePrice for every outer
row. By joining the TickerSymbol from the inner query to the outer query you ensure
that you are not comparing two different stocks. The inner and outer queries are also
joined by the TradeDate, but the TradeDate for the inner query must be less than the
outer query to make sure you get the prior day. The inner query must also be sorted to
get the row that has the latest data but still less than the current date. This query took
over a minute to run on my laptop, which has 16GB of RAM and is using SSD storage.
Almost 700,000 rows were returned.
Query 2 uses the window function LAG to solve the same problem and produces the
same results. Don’t worry about the syntax at this point; you will be an expert by the end
of this book. The query using LAG took just 13 seconds to run on my laptop.

3
Chapter 1 Looking Through the Window

Figure 1-1. Partial results of the stock market problem

By just looking at the code in Listing 1-1, you can see that Query 2 using LAG is much
simpler to write, even though you may not understand the syntax just yet. It also runs
much faster because it is just reading the table once instead of once per row like Query 1.
As you continue reading this book and running the examples, you will learn how window
functions like LAG will make your life easier and your customers happier!

Thinking About the Window


Window functions are different than regular functions because they operate over a
set of rows, also called a window. This may sound similar to how aggregate functions
work. Aggregate functions, such as SUM and AVG, operate on groups of rows and provide
summary values. When you write an aggregate query, you lose the detail columns except
for those in the GROUP BY clause.
When adding a GROUP BY clause, instead of returning a summary along with all the
rows, you will see a summary row, one row for each unique set of GROUP BY columns.
For example, to get a count of the all the rows using an aggregate query, you must leave
out the other columns. Once you add columns into the SELECT and GROUP BY, you get a
count for each unique grouping, not the entire set of results.

4
Chapter 1 Looking Through the Window

Queries with window functions are much different than traditional aggregate
queries. There are no restrictions to the columns that appear in the SELECT list, and no
GROUP BY clause is required. You can also add window functions to aggregate queries,
and that will be discussed in Chapter 3. Instead of summary rows being returned, all
the details are returned and the result of the expression with the window function is
included as just another column. In fact, by using a window function to get the overall
count of the rows, you could still include all of the columns in the table.
Imagine looking through a window to see a specific set of rows while your query is
running. You have one last chance to perform an operation, such as grabbing one of the
columns from another row. The result of the operation is added as an additional column.
You will learn how window functions really work as you read this book, but the idea of
looking through the window has helped me understand and explain window functions
to audiences at many SQL Server events. Figure 1-2 illustrates this concept.

Figure 1-2. Looking through the window to perform an operation on a set of rows

The window is not limited to the columns found in the SELECT list of the query. For
example, if you take a look at the StockHistory table, you will see that there is also an
OpenPrice column. The OpenPrice from one day is not the same as the ClosePrice from
the previous day. If you wanted to, you could use LAG to include the previous OpenPrice
in the results even though it is not included in the SELECT list originally.
In the stock history example using LAG, each row has its own window where it finds
the previous close price. When the calculation is performed on the third row of the data,
the window consists of the second and third rows. When the calculation is performed on
the fourth row, the window consists of the third and fourth rows.
What would happen if the rows for 2017-12-02 were removed from the query by a
WHERE clause? Does the window contain filtered-out rows? The answer is “No,” which
brings up two very important concepts to understand when using window functions:
where window functions may be used in the query and the logical order of operations.
Window functions may only be used in the SELECT list and ORDER BY clause. You
cannot filter or group on window functions. In situations where you must filter or group

5
Chapter 1 Looking Through the Window

on the results of a window function, the solution is to separate the logic. You could use a
temp table, derived table subquery, or a CTE and then filter or group in the outer query.
Window functions operate after the FROM, WHERE, GROUP BY, and HAVING clauses. They
operate before the TOP and DISTINCT clauses are evaluated. You will learn more about
how DISTINCT and TOP affect queries with window functions in the “Uncovering Special
Case Windows” section later in this chapter.
The window is defined by the OVER clause. Notice in Query 2 of Listing 1-1 that the
LAG function is followed by an OVER clause. Each type of window function has specific
requirements for the OVER clause. The LAG function must have an ORDER BY expression
and may have a PARTITION BY expression.

Understanding the OVER Clause


One thing that sets window functions apart is the OVER clause, which defines the window
or set. With one exception I’ll explain in Chapter 7, window functions will have an OVER
clause, and learning how to use the OVER clause is required to understand window
functions. In some cases, the OVER clause will be empty. You will see empty OVER clauses
in Chapter 3 when working with window aggregate functions.

Note There is one situation in which you will see the OVER keyword in a
query not following a window function, and that is with the sequence object.
The sequence object, introduced with SQL Server 2008, is a bucket containing
incrementing numbers often used in place of an identity column.

For any type of expression in the SELECT list of a query, a calculation is performed for
each row in the results. For example, if you had a query with the expression Col1 + Col2,
those two columns would be added together once for every row returned. A calculation
is performed for row 1, row 2, row 3, and so on. Expressions with window functions must
also be calculated once per row. In this case, however, the expressions operate over a set
of rows that can be different for each row where the calculation is performed.
The OVER clause determines which rows make up the window. The OVER clause has
three possible components: PARTITION BY, ORDER BY, and the frame. The PARTITION BY
expression divides up the rows, and it’s optional depending on what you are trying to
accomplish. The ORDER BY expression is required for some types of window functions.

6
Chapter 1 Looking Through the Window

Where it is used, it determines the order in which the window function is applied.
Finally, the frame is used for some specific types of window functions to provide even
more granularity. You’ll learn about framing in Chapter 5.
Many T-SQL developers and database professionals have used the ROW_NUMBER
function. They may not have even realized that this is one of the window functions.
There are many situations where adding a row number to the query is a step along the
way to solving a complex query problem.
ROW_NUMBER supplies an incrementing number, starting with one, for each row. The
order in which the numbers are applied is determined by the columns specified in the
ORDER BY expression, which is independent of an ORDER BY clause found in the query
itself. Run the queries in Listing 1-2 to see how this works.

Listing 1-2. Applying the Row Numbers to Different Columns

USE AdventureWorks;
GO
--1-2.1 Row numbers applied by CustomerID
SELECT CustomerID, SalesOrderID,
    ROW_NUMBER() OVER(ORDER BY CustomerID) AS RowNumber
FROM Sales.SalesOrderHeader;

--1-2.2 Row numbers applied by SalesOrderID


SELECT CustomerID, SalesOrderID,
    ROW_NUMBER() OVER(ORDER BY SalesOrderID) AS RowNumber
FROM Sales.SalesOrderHeader;

Note The AdventureWorks and AdventureWorksDW databases are used in many


of the examples throughout this book. You can use any version starting with 2014
or later to follow along, and the 2017 version was the latest available at the time of
this writing. Just be sure to adjust the USE statement when it’s included to fit your
version of the databases.

The OVER clause follows the ROW_NUMBER function. Inside the OVER clause, you will see
ORDER BY followed by one or more columns. The difference between Queries 1 and 2 is
just the ORDER BY expression within the OVER clause. Notice in the partial results shown
in Figure 1-3 that the row numbers end up applied in the order of the column found

7
Chapter 1 Looking Through the Window

in the ORDER BY expression of the OVER clause, which is also the order that the data is
returned. Since the data must be sorted to apply the row numbers, it is easy for the data
to stay in that order, but it is not guaranteed. The only way to ever actually guarantee the
order of the results is to add an ORDER BY to the query.

Figure 1-3. Partial results of using ROW_NUMBER with different OVER clauses

If the query itself has an ORDER BY clause, it can be different than the ORDER BY within
OVER. Listing 1-3 demonstrates this.

Listing 1-3. Using ROW_NUMBER with a Different ORDER BY in the OVER


Clause
--1-3.1 Row number with a different ORDER BY
SELECT CustomerID, SalesOrderID,
    ROW_NUMBER() OVER(ORDER BY CustomerID) AS RowNumber
FROM Sales.SalesOrderHeader
ORDER BY SalesOrderID;

8
Chapter 1 Looking Through the Window

In this case, the row numbers are applied in order of the CustomerID, but the results
are returned in order of SalesOrderID. The partial results are shown in Figure 1-4. In
order to show that the row numbers are applied correctly, the figure shows the grid
scrolled down to the first customer, CustomerID 11000.

Figure 1-4. Partial results of showing a query with a different ORDER BY than the
OVER clause

Just like the ORDER BY clause of a query, you can specify a descending order with the
DESCENDING or DESC keyword within the OVER clause, as shown in Listing 1-4.

Listing 1-4. Using ROW_NUMBER with a Descending ORDER BY

--1-4.1 Row number with a descending ORDER BY


SELECT CustomerID, SalesOrderID,
    ROW_NUMBER() OVER(ORDER BY CustomerID DESC) AS RowNumber
FROM Sales.SalesOrderHeader;

Figure 1-5 shows partial results. Since it was easy for the database engine to return
the results in descending order by CustomerID, you can easily see that row number 1 was
applied to the largest CustomerID.

Figure 1-5. Partial results of ROW_NUMBER with a descending ORDER BY


9
Chapter 1 Looking Through the Window

In the SalesOrderHeader table, the CustomerID is not unique. Notice in the last
example that 30118 is the largest CustomerID. The row number with SalesOrderID 71803
is 1 and with 65221 is 2. There is no guarantee that the row numbers will be assigned
exactly this way as long as the lowest RowNumbers are lined up with CustomerID
30118. To ensure that the row numbers line up as expected, use a unique column or
combination of columns in the ORDER BY expression of the OVER clause. If you use more
than one column, separate the columns with commas. You could even apply the row
numbers in a random order. Listing 1-5 demonstrates this.

Listing 1-5. Using a Random Order with ROW_NUMBER

--1-5.1 Row number with a random ORDER BY


SELECT CustomerID, SalesOrderID,
    ROW_NUMBER() OVER(ORDER BY NEWID()) AS RowNumber
FROM Sales.SalesOrderHeader;

By using the NEWID function, the row numbers are applied in a random fashion.
Figure 1-6 shows this. If you run the code, you will see different CustomerID values
aligned with the row numbers. Each time the data is returned in order of row number,
just because it is easy for the database engine to do so.

Figure 1-6. Partial results of ROW_NUMBER with a random ORDER BY

As you may guess, applying the row numbers in a specific order involves sorting,
which is an expensive operation. If you wish to generate row numbers but do not care
about the order, you can use a subquery selecting a literal value in place of a column
name. Listing 1-6 demonstrates how to do this.

10
Chapter 1 Looking Through the Window

Listing 1-6. Using ROW_NUMBER with No Order

--1-6.1 Use a constant for an ORDER BY


SELECT CustomerID, SalesOrderID,
    ROW_NUMBER() OVER(ORDER BY (SELECT 1)) AS RowNumber
FROM Sales.SalesOrderHeader;

--1-6.2 Apply an ORDER BY to the query


SELECT CustomerID, SalesOrderID,
    ROW_NUMBER() OVER(ORDER BY (SELECT 1)) AS RowNumber
FROM Sales.SalesOrderHeader
ORDER BY SalesOrderID;

--1-6.3 No ROW_NUMBER and no ORDER BY


SELECT CustomerID, SalesOrderID
FROM Sales.SalesOrderHeader;

Figure 1-7 shows the partial results. In Queries 1 and 2, a subquery selecting a
constant replaces the ORDER BY column. The OVER clauses are identical, but the row
numbers are applied differently, the easiest way possible. The difference between the
two queries is that Query 2 has an ORDER BY clause. Since there is no specific order for
the row numbers to be assigned, the easiest way is the order that the results would be
returned even if the ROW_NUMBER function was not there. Query 3 shows how the rows
are returned with no ROW_NUMBER and no ORDER BY. You may be wondering why the
optimizer chose to return the results in Queries 1 and 3 in CustomerID order. There
just happens to be a nonclustered index on CustomerID covering those queries. The
optimizer chose the index that is ordered on CustomerID to solve the queries.

11
Chapter 1 Looking Through the Window

Figure 1-7. Partial results of letting the engine decide how row numbers are applied

Another thing to learn from this example is that ROW_NUMBER is nondeterministic.


It is not guaranteed to return the identical values under the same situations. By
reviewing the documentation for each window function, you will see that each one is
nondeterministic. You may argue that this is wrong because a different ORDER BY clause
is used for the two queries, causing the two ROW_NUMBER functions to have different
inputs. The article “Deterministic and Nondeterministic Functions” in SQL Server’s
documentation states:
You cannot influence the determinism of any built-in function. Each
built-­in function is deterministic or nondeterministic based on how the
function is implemented by SQL Server. For example, specifying an ORDER
BY clause in a query does not change the determinism of a function that is
used in that query.
If the ORDER BY clause consists of a unique set of columns, you can predict how the
row numbers are assigned, but ROW_NUMBER is still nondeterministic. Listing 1-7 is an
example.

12
Chapter 1 Looking Through the Window

Listing 1-7. Using Different ORDER BY Clauses

--1-7.1 OVER clause has just CustomerID


SELECT CustomerID, SalesOrderID,
    ROW_NUMBER() OVER(ORDER BY CustomerID) AS RowNumber
FROM Sales.SalesOrderHeader
ORDER BY CustomerID, SalesOrderID;

--1-7.2 Same query, just a new ORDER BY clause


SELECT CustomerID, SalesOrderID,
    ROW_NUMBER() OVER(ORDER BY CustomerID) AS RowNumber
FROM Sales.SalesOrderHeader
ORDER BY CustomerID, SalesOrderID DESC;

Figure 1-8 shows the partial results. Notice that SalesOrderID is assigned 1 in Query
1 and 3 in Query 2. The only difference between the two queries is the ORDER BY clause.
Since CustomerID 11000 has three orders, numbers 1, 2, and 3 must be assigned to the
three rows, but there is no guarantee how they will be assigned.

Figure 1-8. Demonstrating nondeterminism

13
Chapter 1 Looking Through the Window

There are a couple of things that you cannot do with window functions that may be
related to determinism. You cannot use a window function expression in a computed
column (a column in a table composed of an expression), and you cannot use a window
function expression as a key for the clustered index of a view.
The ORDER BY expression in the OVER clause is quite versatile. You can use an
expression instead of a column as was shown with NEWID in the earlier example. You
can also list multiple columns or expressions. Listing 1-8 demonstrates using the CASE
statement in the ORDER BY.

Listing 1-8. Using an Expression in the ORDER BY and Another Column

--1-8.1 Use an expression in the ORDER BY


SELECT CustomerID, SalesOrderID, OrderDate,
    ROW_NUMBER() OVER(ORDER BY CASE WHEN OrderDate > '2013/12/31'
        THEN 0 ELSE 1 END, SalesOrderID) AS RowNumber
FROM Sales.SalesOrderHeader;

Figure 1-9 shows the partial results. In this case, the row numbers are applied first
to the orders from 2014 and then by SalesOrderID. The grid is scrolled down to the last
three orders of 2014 so you can see that the next numbers applied are from the beginning
of the data, 2011.

Figure 1-9. Partial results of using an expression and another column

There are two additional components of the OVER clause: partitioning and framing.
You will learn about framing, introduced in 2012, in Chapter 5. Partitioning divides the
window into multiple, smaller windows, and you’ll learn about that next.

14
Discovering Diverse Content Through
Random Scribd Documents
The Project Gutenberg eBook of L'été de
Guillemette
This ebook is for the use of anyone anywhere in the United States
and most other parts of the world at no cost and with almost no
restrictions whatsoever. You may copy it, give it away or re-use it
under the terms of the Project Gutenberg License included with this
ebook or online at www.gutenberg.org. If you are not located in the
United States, you will have to check the laws of the country where
you are located before using this eBook.

Title: L'été de Guillemette

Author: Henri Ardel

Release date: February 16, 2024 [eBook #72975]

Language: French

Original publication: Paris: Plon, 1908

Credits: Laurent Vogel (This file was produced from images


generously made available by the Bibliothèque nationale de
France (BnF/Gallica))

*** START OF THE PROJECT GUTENBERG EBOOK L'ÉTÉ DE


GUILLEMETTE ***
HENRI ARDEL

L’ÉTÉ DE GUILLEMETTE

PARIS
L I B R A I R I E P LO N
PLON-NOURRIT ET Cie, IMPRIMEURS-ÉDITEURS
8, RUE GARANCIÈRE — 6e

Tous droits réservés


DU MÊME AUTEUR, A LA MÊME LIBRAIRIE

Le Mal d’aimer. 11e édit. 1 vol. in-16 3 fr. 50


Au Retour. 8e édit. 1 vol. in-16 3 fr. 50
Cœur de sceptique. 13e édit. 1 vol. in-16 3 fr. 50
(Ouvrage couronné par l’Académie française, prix Montyon.)
Rêve blanc. 9e édit. 1 vol. in-16 3 fr. 50
Tout arrive. 10e édit. 1 vol. in-16 3 fr. 50
L’Heure décisive. 8e édit. 1 vol. in-16 3 fr. 50
La Faute d’autrui. 8e édit. 1 vol. in-16 3 fr. 50
Seule. 15e édit. 1 vol. in-16 3 fr. 50
Mon cousin Guy. 29e édit. 1 vol. in-16 3 fr. 50
L’Absence. 7e édit. 1 vol. in-16 3 fr. 50
Renée Orlis. 13e édit. 1 vol. in-16 3 fr. 50
Tous droits de reproduction et de traduction
réservés pour tous pays.

Published 29 July 1908.


Privilege of copyright in the United States
reserved under the Act approved March 3d 1905
by Plon-Nourrit et Cie.
L’ÉTÉ DE GUILLEMETTE

Dans la fournaise du grand magasin que chauffe, à travers les


stores baissés, un ardent soleil de juillet, Guillemette Seyntis, d’un
air de personne très raisonnable, trotte allègrement, de comptoir en
comptoir, pour remplir les diverses missions d’achat que sa mère lui
a confiées.
L’atmosphère est étouffante, malgré les vitres ouvertes, et pâlit le
visage des infortunées vendeuses qui, depuis le matin, s’appliquent
à répondre fructueusement aux désirs variés de clientes toujours
renouvelées… Qui donc a prétendu, qu’en juillet, il n’y a plus
personne à Paris ?
Elle, Guillemette, est seulement un peu plus rose qu’une demi-
heure plus tôt quand, sous l’escorte de miss Murphy, elle est
descendue de voiture devant le trottoir encombré par la foule des
acheteuses qui s’affairent, coude contre coude, autour des étalages
discrètement ennuagés de poussière, mais combien riches
d’occasions !
Dans le dédale des galeries où, en multiples aspects, la tentation
s’épanouit, elle a glissé de son pas souple de créature très jeune ;
amusée d’acheter, car ignorant, de par la grâce du ciel, la valeur de
l’argent, elle trouve aussi charmant que naturel de s’offrir tout ce qui
lui plaît.
Guillemette Seyntis est une enfant gâtée de la vie. La destinée a
fait d’elle une précieuse héritière, l’a pourvue d’une mère parfaite et
lui a donné pour père un grand financier qui se trouve être, en
même temps, un très honnête et très galant homme dont
l’honorabilité est aussi indiscutable qu’enviée de beaucoup, dans le
monde des manieurs d’argent où il est une puissance.
De là, chez elle, une fort riante conception de l’existence qu’elle
goûte avec une âme frémissante et une pensée vive, indépendante,
curieuse ; avec l’agréable certitude d’avoir reçu de la nature une
silhouette qui resterait élégante et fine sous des guenilles ; un visage
délicatement modelé d’un trait spirituel — comme en dessine
Helleu… — où fleurit le sombre iris des grands yeux d’un bleu violet ;
une onduleuse chevelure châtain, ombrée de moires d’or. De telle
sorte qu’elle paraît, selon les caprices de la lumière, très blonde ou
presque brune…
Certes, Guillemette aime beaucoup mieux être, sans conteste,
une jolie créature… Mais cela étant vérité reconnue, elle accepte
comme toute naturelle cette favorable situation et n’en tire nulle
vanité.
A ses heures, elle est coquette comme une autre, — sans un brin
de perversité, — parce qu’elle a dix-huit ans et que ça l’amuse de
plaire, fût-ce à des indifférents… Elle l’est de manière discrète, car
c’est une petite fille fort bien élevée et, dans le monde, elle ne se
montre pas de ces jeunes personnes qui s’affichent par des flirts
audacieux et scandalisent les mères de famille en allumant de leur
mieux les vains désirs des jeunes hommes. Aussi Mme Seyntis
déclare-t-elle, — bien sincère ! — que sa fille est encore une gamine
qui ne pense qu’à la danse.
C’est vrai, elle y pense, quand l’occasion s’en présente… Mais elle
pense encore à tant d’autres choses ! Dans le cœur et le cerveau des
fillettes du nouveau siècle, s’agite tout un monde que ne
soupçonnent pas les mères qui ont gardé leur âme d’autrefois.
Et Mme Seyntis — la candeur même ! — serait tout bonnement
horrifiée si elle entrevoyait quelle créature déjà compliquée,
clairvoyante, pensive, avec d’inconscientes audaces, vit ardemment
dans sa Guillemette, élevée selon les sages vieux principes qu’elle a
vus régir sa propre jeunesse ; saupoudrée de bons conseils, de
catéchismes, — voire même de retraites, au temps du Carême, — de
cours sans nombre… Régime qui a procuré à la jeune personne des
« clartés de tout » et un étonnant bagage d’idées personnelles,
résultant du choix qu’elle a fait parmi les copieux enseignements qui
lui étaient prodigués.
— Guillemette, tu te livres à des achats ?
Guillemette tourne la tête et rencontre les yeux bruns,
chaudement passionnés, de sa cousine Mme de Miolan qui lui
sourient sous l’ombre de la capeline fleurie.
Tout de suite, elle se rapproche de la jeune femme, sans souci de
la foule qui les heurte, de l’employé qui, devant elle, s’achemine,
tête baissée, vers la caisse. Elle serre la main de Mme de Miolan.
— Je faisais des commissions pour maman. Elle déteste les
magasins ; mais j’ai fini.
— Alors, reste un instant avec moi ; j’ai une étoffe de blouse à
choisir, tu m’aideras.
Guillemette ne demande pas mieux, d’abord parce qu’elle aime à
voir de jolis chiffons ; mais surtout, parce que Nicole de Miolan
exerce sur elle cette attraction que les « grandes » possèdent
souvent sur les « petites ». Or Nicole est une grande pour
Guillemette ; non pas tant à cause de leur différence d’âge, — six
ans à peine ; — mais Nicole a traversé des années qui ont accrû la
distance. Et Guillemette le sait bien, malgré la prudente discrétion de
Mme Seyntis. Elle a fait, envers et contre tous, un mariage d’amour
avec un beau garçon, — attaché d’ambassade, célèbre en son
monde par ses aventures et folies sentimentales, — qui l’a adorée,
puis trompée ; du moins, elle en a la conviction. Volontaire,
passionnée, très fière, elle n’a pas pardonné et, orgueilleusement, a
prétendu à un droit de représailles. Les scènes ont succédé aux
scènes jusqu’au jour où Nicole, sans phrases ni explications, a quitté
mari et ambassade, pour venir à Paris demander son divorce.
En attendant qu’elle l’obtienne, elle mène une existence de
mondaine, vaguement chaperonnée par son père et sa mère,
excellentes et dignes personnes que sa situation désespère, mais qui
ont toujours été incapables d’avoir une volonté autre que la sienne.
Tous les membres sérieux de la famille déplorent un tel état de
choses et se confient, avec émoi, qu’on parle de Nicole bien plus et
bien autrement qu’il ne faudrait… Que ne dit-on pas d’une très jolie
femme seule, courtisée et qui ne se refuse pas à l’être !…
Aussi, Mme de Seyntis fait-elle des prodiges de diplomatie pour
rendre rares les rencontres de sa fille et de Nicole. Comme elle est
bonne et soucieuse de pratiquer la charité, elle s’efforce de ne pas
trahir son sentiment. Mais Guillemette est bien trop fine pour ne
l’avoir pas deviné… C’est pourquoi elle éprouve un léger scrupule à
s’attarder avec sa séduisante cousine…
La tentation est trop forte pour qu’elle n’y succombe pas. Après
tout, il ne s’agit que de quelques instants à passer ensemble, dans la
cohue d’un magasin. Sûrement, sa mère elle-même jugerait la
rencontre bien inoffensive !
— Guillemette, hasarde timidement miss Murphy, il faudrait aller
à la caisse. Voyez, l’employé vous attend.
— Pauvre homme, il attend !… Eh bien, miss Murphy, soyez un
amour, allez payer pour moi, voici mon porte-monnaie. Et puis, vous
viendrez me retrouver aux soieries où j’ai quelque chose à voir avec
Mme de Miolan.
Guillemette dit cela avec un sourire auquel miss Murphy est
d’autant plus incapable de résister qu’elle a, de vieille date, abdiqué
toute autorité sur son indépendante élève. Et derrière le commis,
elle s’en va, boitillante et raide, ses yeux de myope attachés à
l’employé qui déambule devant elle, aspirant à la liberté de courir
vers de nouvelles clientes.
Cependant Nicole et Guillemette bavardent et attendent que le
monsieur en cravate blanche dont l’occupation est de faire
manœuvrer le régiment des vendeurs, leur ait annoncé que leur tour
d’être servies est enfin arrivé.
— Ce sera dans un instant, mesdames, leur assure-t-il de l’air le
plus encourageant ; car il témoigne une bonne grâce toute
particulière aux clientes que sa compétence lui révèle de fortunées
femmes du vrai monde.
Nicole répond à ces paroles par un vague signe de tête et elle
demande à Guillemette, tout en considérant les plis soyeux d’un
satin drapé près d’elle :
— Vous ne partez donc pas encore pour Houlgate ?
— Si, bientôt !… Mais nous attendons qu’André en ait fini avec
son bachot.
— Période agitée, alors !… C’est pour bientôt ?
— Dans quatre jours.
— Ah ! Ah !… Et a-t-il des chances de succès, ce bon André ?
— Ce sera au petit bonheur, fait Guillemette avec philosophie,
étant donnée son ardeur au travail. S’il ne réussit pas, il y aura
scènes de désolation de cette pauvre maman, scènes de colère du
côté de papa…
Mme de Miolan a un indéfinissable sourire :
— Ton père s’intéresse tant que cela aux examens d’André ?
En l’intimité de sa pensée très éclairée, elle s’étonne qu’avec les
profanes distractions qui reposent Raymond Seyntis de ses affaires,
il trouve encore des loisirs pour certaines de ses attributions
paternelles.
Guillemette aussi s’est mise à rire.
— Papa, quant au travail d’André, ressemble aux panthères qui
bondissent tout à coup sur les paisibles voyageurs. Il reste des
semaines sans demander à André quel est l’état de ses notes ; et
puis, tout à coup, quand André est dans une parfaite quiétude, il
fond sur lui pour l’interroger, questionner les professeurs ; ce qui a,
en général, un résultat désastreux pour la tranquillité de mon cher
frère !
Mais ici, la conversation est interrompue par les paroles
obligeantes du monsieur en cravate blanche qui avertit Nicole qu’un
vendeur est à sa disposition.
C’est un garçon à la face poupine, enserrée dans une cravate
1830. Il croit devoir accabler Nicole de questions pour s’enquérir de
ce qu’elle désire. Elle lui répond qu’elle n’en sait rien et demande à
voir beaucoup d’étoffes souples. Comme elle lui fait cette déclaration
avec un sourire, qu’il devine en elle une de ces clientes qui n’ont pas
souci du bon marché, il s’en va aimablement puiser dans les rayons,
et, sans se lasser, apporte pièce après pièce, à Nicole qui n’est
jamais satisfaite.
Seulement, elle a une manière de demander : « N’avez-vous pas
encore autre chose ? » si encourageante, que le gros garçon
continue à subtiliser à ses confrères les plus séduisantes étoffes pour
les lui soumettre.
Elle et Guillemette regardent, comparent, s’amusent du jeu
chatoyant des coloris qui s’harmonisent ou se heurtent. Devant elles,
il y a maintenant des jaunes safranés, blonds comme des épis, aux
reflets roux, de pain brûlé ; des bleus verdissants ainsi qu’un ciel de
crépuscule ; des roses nacrés, ou d’un ton violent de corail rouge ;
des verts d’opale, et aussi, des mauves pareils à des pétales
d’hortensia…
Elles s’attardent à choisir parce qu’elles causent.
— Je prends ceci, monsieur, dit enfin Nicole. Elle s’aperçoit tout à
coup que la chaleur est étouffante dans la galerie où circule,
incessamment, le flot des acheteuses.
Mais tandis que le gros jeune homme mesure les mètres
demandés, elle reprend, un peu distraite, car elle regarde l’étoffe :
— Alors rien de nouveau dans la famille que les exploits
intellectuels d’André ?
— Mais si… mais si… Il y a le retour de l’oncle René !
— Ah !… René revient de Madagascar…
Une expression profonde a soudain changé le regard de Nicole.
Son accent a quelque chose de rêveur…
— Oui, il arrive à la fin du mois et il passera l’été avec nous à
Houlgate. Maman est dans le ravissement. Cela fait près de cinq ans
qu’il n’est pas rentré en France !
— C’est vrai… cinq ans… Je venais d’être fiancée quand il est
parti…
D’où naissent les intuitions ? Est-ce la voix, le regard de Mme de
Miolan qui font jaillir dans la pensée de Guillemette, la certitude
instinctive qu’il y a eu quelque coïncidence entre le mariage de
Nicole et la longue absence de René Carrère dont sa famille s’est
désolée. Et parce qu’elle a très envie de savoir, sans réfléchir, elle
laisse échapper :
— N’est-ce pas, Nicole, il était amoureux de toi, l’oncle René ?
La jeune femme, qui est restée immobile, avec des yeux
songeurs, fermés au décor papillotant du magasin, répète du même
ton un peu lent, et ses lèvres onduleuses ont une expression
presque railleuse, mais si triste :
— Très amoureux !… Aussi amoureux que pouvait l’être un garçon
raisonnable et… sage comme lui !…
— Si raisonnable que cela ?… Oh ! Nicole, qu’il devait être
ennuyeux ! fait, avec conviction, Guillemette, dont les dix-huit ans
goûtent les cavaliers très fringants, très flirts, et enveloppent, à
l’avance, d’un juvénile dédain cet oncle si sage dont sa mère célèbre
toujours les nombreuses qualités.
— Non, il n’était pas ennuyeux, mais effrayant de bons
principes… Tout à fait le frère de ta mère !… Je ne me suis pas sentie
à la hauteur… Et j’ai été, d’ailleurs, bien mal récompensée de mon
humilité !… Là-dessus, allons donner mon adresse, qu’on m’envoie
mon satin. Il est joli, n’est-ce pas ?
Nicole a secoué la tête comme pour en rejeter toutes les
pensées, tous les souvenirs qui se mêlaient d’y tourbillonner tout à
coup comme des oiseaux tristes et elle paraît occupée seulement
d’en finir avec son achat. Guillemette la suit, devenue distraite,
écoutant vaguement les explications que croit devoir lui donner miss
Murphy qui s’embrouille dans le compte de sa monnaie.
Toutes trois sortent enfin du « temple des vanités ». Dehors, un
ardent soleil ruisselle sur l’asphalte brûlant, où les arbres poudreux
allongent des ombres dures.
Des femmes passent en robe claire, chaussées de cuir pâle, les
épaules nues sous la dentelle du corsage, le teint fouetté de rose par
l’éclatante chaleur.
— Quelle odieuse température ! soupire Nicole. Veux-tu venir
prendre une glace ? Guillemette. Nous nous voyons si peu et si mal
que pour une fois que je te tiens, j’ai envie d’en profiter…
Ah ! la tentation encore ! Mais Guillemette, élevée comme son
oncle, dans les « bons principes », n’ose pas faire sciemment ce que
sa mère lui interdirait, sans doute.
— Chérie, je te remercie, mais il faut que je rentre. Nous nous
verrons bien à Houlgate… Car tu y viens ?…
— Oui, correctement escortée de ma famille, avant d’aller seule à
Dinard retrouver des amis. Peut-être ton oncle sera-t-il arrivé… Cela
m’amusera de le revoir… Nous nous trouverons vieillis !
— Nicole, que tu es encore coquette pour une dame qui a vieilli !
Lui, est déjà un peu, un monsieur d’âge… c’est vrai… à trente ans !…
Un capitaine, et qui revient de si loin ! Les années de campagne
comptent double…
— Et les années de mariage triple, quadruple, alors ! murmure
Nicole. Petite Guillemette, marie-toi le plus tard possible !… Comme
on dit en musique : « Profite bien de ta jeunesse ! »
— Nicole chérie, je t’assure que je fais de mon mieux !
Cela, c’est bien la vérité. Nicole le sent, et un sourire d’affection,
— un peu aussi de pitié pour les illusions de cette enfant, — adoucit
un instant la flamme de ses yeux.
— Comme tu as raison ! Au revoir, mon petit. Ah ! tu n’es pas une
Carrère, toi, mais une vraie Seyntis…
Sur son ordre, le chasseur a fait un signe à son cocher. Des
passants se retournent pour regarder monter en voiture cette très
jolie femme, habillée avec un goût raffiné en sa simplicité
apparente ; — elle porte un « tailleur » de grosse toile bise… Et, en
une seconde, elle est tout ensemble admirée, désirée, enviée, — elle
qui, à cette heure, n’est qu’une vivante épave, emportée à la dérive
par le grand flot de la vie.
Guillemette aussi est restée une seconde à la regarder, avec des
yeux de gamine qui se connaît déjà fort bien en grâce féminine et a
beaucoup entendu parler…
Mme de Miolan a raison, Guillemette est une Seyntis. Elle est la
vraie fille du financier spirituel, hardi et galant, épris de tout ce qui
est beauté, — femmes et œuvres d’art, — s’offrant les unes et les
autres avec une somptuosité de fermier général du temps jadis ; au
demeurant, un très aimable mari qui voile, d’une délicate discrétion,
ses promenades ultra-conjugales et éprouve la plus sincère affection,
avec une estime très haute, pour la femme dont il possède
absolument l’être, corps et âme. En effet, vingt années de mariage
n’ont pu altérer chez Mme Seyntis, une confiance de jeune épousée.
Confiance dont Guillemette pourrait bien ne pas faire si généreux
hommage à son futur mari, toute saturée qu’elle ait été de bons
exemples et conseils. Les petites filles du vingtième siècle ont respiré
d’autres souffles et trop entendu célébrer le nouvel évangile de leurs
droits !…
Quoi qu’il en doive être de l’avenir, pour l’heure, ladite petite fille
chemine pédestrement vers l’hôtel Seyntis, insouciante de la chaleur
et de la poussière, des regards qui caressent au passage son
éblouissante jeunesse. Elle trotte d’un pas vif, suivie tant bien que
mal par miss Murphy ; et elle ne s’en aperçoit pas, tant sa pensée
est absorbée toute par la soudaine révélation qu’elle vient d’avoir
d’un roman inachevé entre l’oncle René et Nicole.
Comment jamais un mot ne lui en avait-il donné le soupçon ?…
Est-ce un secret entre eux ?… Ou la famille le sait-elle ?
Que Nicole ait eu peur d’un mari sérieux comme l’oncle René, elle
le comprend bien !… Mais combien lui, si sage, devait être pris
profondément pour demeurer tant d’années hors de France… Sans
doute afin de se guérir… Puisqu’il revient aujourd’hui, c’est qu’il n’a
plus peur de la retrouver… D’ailleurs, ainsi que dans les livres, il est
vengé puisqu’elle a eu un détestable mari, choisi, voulu par elle
seule…
En est-elle malheureuse ? Regrette-t-elle d’avoir misérablement
gâché sa vie ?… Qui le sait ?… Pour tous, l’âme de Nicole demeure
close. Jamais elle ne se plaint ni ne parle des dernières années
qu’elle a vécu. Il semblerait qu’elle se contente désormais d’être une
créature délicieuse dont les hommes s’affolent, que les femmes
jalousent. Elle va beaucoup dans le monde et s’habille mieux que
nulle autre… Elle cause, elle rit… Mais, par instant, son rire sonne à
l’oreille comme un sanglot bref, douloureux à entendre, et ses beaux
yeux, qu’on dirait faits d’une ombre brûlante, regardent souvent vers
l’Invisible…
Mme Seyntis s’illusionnait bien quand elle s’imaginait que ne
parlant pas devant Guillemette des malheurs conjugaux de sa
cousine, elle endormirait, sur ce point, la jeune pensée si vite en
éveil. Les quelques mots de Nicole ont ressuscité pour Guillemette
l’image de Guy de Miolan, grand, svelte, d’allure patricienne ; le
visage barré d’une moustache fauve… Et mieux encore, elle revoit
les yeux gris dont l’expression, jadis, lui faisait trouver si naturel que
Nicole allât, quoi qu’on lui dît, à celui qui savait ainsi la regarder.
Tous deux, d’ailleurs, lui donnaient l’impression d’êtres enfermant en
eux quelque brûlant foyer…
Donc ils sont brouillés. Nicole attend son divorce et lui ne tente
rien pour l’apaiser et la ramener. L’oncle René revient ; il va revoir
Nicole… Ici, la pensée de Guillemette s’arrête devant une conclusion
impossible. Même arrivât-il que la jeune femme obtînt son divorce,
même l’oncle fût-il encore amoureux, tout mariage serait impossible
entre eux, puisque la loi seule lui rend sa liberté. Et Guillemette,
élevée par une mère rigoureusement religieuse, ne conçoit même
pas un mariage hors de l’Église… Alors… quoi ?
— Oh ! Guillemette, comment pouvez-vous marcher si vite par
cette chaleur ! soupire la voix plaintive de miss Murphy.
Guillemette tressaille ; et, un peu saisie, confuse, parce qu’elle
est habituée à prendre souci des autres, elle regarde la pauvre miss,
essoufflée et cramoisie, sous son ombrelle.
— Ma pauvre Murphy ! je vous demande bien pardon !… Je
réfléchissais et je ne m’apercevais pas que je vous faisais ainsi
trotter ! Nous allons marcher bien lentement pour vous remettre.
— Ah ! maintenant, nous arrivons…
C’est vrai, devant elles deux, apparaît la voûte ombreuse de
l’avenue de Messine, et plus loin, se montrent les cimes feuillues du
parc Monceau sur lequel s’ouvrent les fenêtres de l’hôtel Seyntis.
II

Un quart d’heure plus tard, Guillemette, toute rose de sa course


rapide, pénètre dans la salle d’étude où sa jeune sœur Mad peine
sur les devoirs que lui fait faire consciencieusement Mademoiselle, —
M’selle, comme dit André, et tous à sa suite.
— Bonjour, les travailleuses ! jette joyeusement Guillemette. Quel
beau temps, n’est-ce pas ?… Ah ! j’aime l’été !
— Pas moi, en ce moment, gémit Mad qui est sans ardeur devant
ses problèmes. Je l’aimerai seulement quand les vacances seront
venues.
— Pauvre, chérie ! Ce ne sera plus long, va… M’selle, si vous lui
accordiez congé ?
— Oh ! Guillemette, c’est impossible ! Ne lui donnez pas de
mauvais conseils. Il faut faire ce qui doit être fait…
— M’selle, vous êtes la sagesse même !
Mademoiselle devient toute rouge, de pâle qu’elle est d’ordinaire.
Elle est timide, douce, savante et scrupuleuse jusqu’à la minutie
dans le souci de son devoir.
— Ah ! Guillemette, pourquoi vous moquez-vous de moi ?
— Ma petite M’selle, je ne me moque pas du tout, je constate !
réplique Guillemette avec un sourire d’amitié à la jeune institutrice
qui, son aînée de plus de dix ans, lui donne souvent l’impression
d’une créature à protéger.
— Aimez-vous l’été ? vous ? M’selle.
— Oh ! non ! je ne l’aime pas ! laisse échapper Mademoiselle, avec
une telle conviction que les prunelles de Guillemette la contemplent,
surprises.
— Comme vous dites cela ! M’selle. Pourquoi donc ne l’aimez-vous
pas cette jolie saison, odorante, lumineuse, dorée… A cause de la
chaleur ?
— Non, oh ! non ! La chaleur m’est indifférente !…
Guillemette voit bien que Mademoiselle pense quelque chose
qu’elle ne veut pas dire ; et, discrètement, elle n’insiste pas. Mais
cette lueur mélancolique qui a, tout à coup assombri les yeux clairs
de l’institutrice de Mad, dissipe brusquement l’espèce de griserie
jetée en elle par la féerie de cette journée de juillet. Parce qu’elle est
très heureuse, elle voudrait tant que tout le monde le fût !
Que peut bien avoir Mademoiselle ?
Elle y songe, tout en enlevant sa toilette de sortie, dans la
grande chambre, ouverte sur l’horizon frais des pelouses du parc
Monceau, qui est son domaine ; un riant domaine, tendu de vieux
Jouy, fleuri comme un reposoir, décoré de quelques toiles de maître,
de bibelots précieux, rassemblés par ses désirs de fillette riche et
gâtée.
Quand elle entend, dans le petit salon, le piano résonner sous les
doigts résignés de Mad, elle rentre, d’un élan instinctif, dans la salle
d’étude où elle est sûre de trouver Mademoiselle, remettant en ordre
livres et cahiers, avant de s’en aller regagner son logis familial, tous
les jours, à six heures.
L’institutrice est, en effet, devant la table de travail, une plume
en main. Sans doute, elle prépare les devoirs de Mad. Mais elle
n’écrit pas ; elle réfléchit… La même expression soucieuse altère son
visage un peu fatigué et ses yeux regardent fixement loin devant
elle, vers les cimes vertes des arbres.
Guillemette lui effleure l’épaule et interroge, très douce :
— M’selle, je ne voudrais pas être indiscrète, mais vous avez l’air
d’avoir un souci… Est-ce que… je ne pourrais rien pour vous aider,
un peu, à le porter ? Dites-moi pourquoi vous n’aimez pas l’été ?
C’est cette simple petite question qui vous a attristée…
— Parce que l’été est une saison dure à passer pour moi !…
Guillemette la regarde sans comprendre ; et Mademoiselle se
sent loin, — oh ! si loin ! — de cette jeune créature que la vie a
comblée.
— L’été vous est dur ?…
— Oui, c’est un temps pendant lequel je ne gagne pas, murmure
Mademoiselle. Il m’apporte des vacances forcées ; et… il ne m’en
faudrait pas !
Guillemette serre inconsciemment ses deux mains l’une contre
l’autre. Quelque chose qui ressemble à une angoisse l’a fait
tressaillir ; car si les paroles de Mademoiselle sont pour elle
dépourvues d’un sens précis, elle les devine cependant lourdes
d’inquiétudes… Et sa jeunesse heureuse se cabre, en un sursaut de
révolte, devant la loi cruelle qui pèse sur certaines existences.
Misérablement, elle se sent impuissante pour venir en aide à la
petite institutrice de Mad.
Il y a, entre elles deux, un léger silence ; Mademoiselle est toute
à son tourment ; et, Guillemette qui, de tout cœur, souhaiterait le lui
enlever, se demande, sans trouver de solution, ce qu’elle pourrait
bien faire… Le piano frémit, torturé par Mad qui s’impatiente devant
un passage hérissé d’imprévu. Guillemette suggère, encourageante :
— Mais puisque vous gagnez toute l’année, Mademoiselle, vous
pouvez bien vous reposer un peu pendant les vacances !
— Il faut vivre aussi au temps des vacances, articule humblement
Mademoiselle. C’est pourquoi je ne peux pas me réjouir, comme
vous, de les voir arriver !
— Oui, je comprends ! fait Guillemette sérieuse.
Pour la première fois, elle vient d’avoir la conscience nette de ce
qu’est la lutte pour ceux qui travaillent afin de gagner leur pain
quotidien. Comment, jusqu’à cette minute, lui a-t-il paru si naturel
qu’elle n’eût, elle, qu’à se laisser vivre, alors que d’autres doivent
peiner sans relâche… Comment a-t-elle pu trouver tout simple que
Mademoiselle vienne, chaque jour, faire faire d’insipides devoirs à
Mad, passe des instants monotones aux Champs-Élysées à la
regarder jouer, trotte pour la conduire à ses cours et soit à tous, sauf
à elle-même, de neuf heures du matin à six heures du soir ?…
Pourtant, Mademoiselle n’avait pas été élevée pour cette
existence de manœuvre. Son père possédait, dans l’armée, un haut
grade quand il est mort, il y a cinq ans. Maintenant elle et sa sœur
doivent travailler pour leur mère qui est demeurée sans fortune.
Tout cela, Guillemette le sait depuis que Mademoiselle a été
placée auprès de Mad ; et elle a, sans y prendre garde, accepté une
situation dont l’intéressée ne se plaignait pas.
Et voici que soudain, comme si quelque voile mystérieux venait
de se déchirer en sa pensée, elle se sent honteuse, au plus profond
du cœur, de son luxe, de son existence facile, honteuse de n’être,
dans la vie, qu’un inutile petit bibelot. Ardemment, elle souhaiterait
faire quelque chose pour alléger la tâche de Mademoiselle. Elle
voudrait pouvoir lui offrir tout le contenu de sa bourse, lui assurer
des revenus, la mettre à l’abri des soucis d’argent.
Désirs de bébé, elle le sait bien ! Ses maigres économies, — elle
ignore le secret d’en faire ! — seraient une goutte d’eau pour
Mademoiselle et lui donner de bonnes rentes est tout aussi
impossible… Alors ?… Comme c’est peu de chose, le seul désir
d’aider !
Guillemette sort toute grave de son entretien avec Mademoiselle.
De sa fenêtre, elle la voit quitter l’hôtel, s’en aller d’une allure
discrète de souris trottant menu, la tête un peu penchée. Sans
doute, elle s’ingénie de nouveau à résoudre le problème qui la
trouble et rend Guillemette songeuse.
Se peut-il que l’été, lumineux et fleuri, synonyme pour elle de
joyeuses villégiatures, d’excursions, agrémentées de flirts amusants
qui rendent exquises les flâneries sur la plage ou par les chemins
verts…, ce même été soit, pour d’autres, une saison d’inquiétudes,
d’épreuves ; si difficile à traverser, que même de pauvres filles,
fatiguées comme Mademoiselle par des mois et des mois d’incessant
labeur, ne peuvent accepter comme un bienfait le repos qu’il leur
apporte… Et parce qu’elle vient de se heurter à cette implacable
nécessité, Guillemette ne peut jouir, comme chaque soir, du décor
charmant aperçu de sa fenêtre, des jeux de la lumière sur les arbres
où tous les verts se fondent en harmonies d’ombres et de clartés, du
velours frais des pelouses sous la pluie irisée des jets d’eau… Elle ne
voit que les humbles qui, en cette saison d’été, envahissent
l’aristocratique jardin, les mères assises, tête nue, sur les bancs —
qui, elles aussi peut-être, souffrent d’avoir des loisirs d’été… — les
petits, barbouillés de poussière qui jouent avec le sable, en
attendant que, dans l’avenir, devenus des hommes, des femmes, ils
doivent vivre courbés sous la servitude du travail…
Et le même sentiment de confusion l’étreint parce qu’elle a été
comblée par la destinée, sans avoir rien fait pour le mériter… Il lui
semble qu’elle ne pourra retrouver sa joyeuse sérénité tant qu’elle
n’aura rien tenté pour Mademoiselle, tout au moins.
Le dîner de famille ne la distrait pas des idées qui la hantent. Elle
songe que tant d’autres trouveraient aussi agréable qu’elle-même,
de croquer des plats très fins, autour d’une table fleurie, dans une
salle à manger tendue de tapisseries célèbres, de manier de délicats
cristaux, de fines porcelaines, une argenterie artistique, d’être servie
par un maître d’hôtel vigilant…
Elle entend son père raconter avec enthousiasme une
somptueuse acquisition qu’il vient de faire chez un antiquaire qui
possède de coûteuses merveilles. Elle écoute sa mère parler de ses
projets d’invitation pour Houlgate, afin d’y amener de jeunes
héritières, d’éducation accomplie, à l’intention de son frère, dont une
dépêche vient de lui annoncer la très prochaine arrivée…
Ici, elle dresse la tête et oublie un instant Mademoiselle et ses
laborieux frères et sœurs… Ah ! l’oncle René ne tardera plus à
apparaître… Alors il est certain que Nicole et lui vont se retrouver à
Houlgate… Mme Seyntis ne paraît pas le redouter… Peut-être après
tout, elle n’a ni su, ni deviné… Cela voit si peu clair, les parents
quelquefois !
— Marie, je vais faire un tour au cercle, dit M. Seyntis qui a fini
de fumer son cigare ; et, tout en parlant, il caresse les cheveux de
Guillemette laquelle songe à mille choses, debout dans le cadre de la
fenêtre, ouverte sur la nuit d’été.
Chaque soir, si aucune invitation n’appelle les Seyntis hors de
chez eux, — c’est rare, il est vrai ! — Mme Seyntis entend cette
phrase de son mari. Et elle l’accueille avec une simple bonne grâce.
— Bien, mon ami, à tout à l’heure !
Ce « tout à l’heure » viendra tardivement. Mais Mme Seyntis est si
habituée à ce qu’il en soit ainsi, qu’elle ne pense même pas à s’en
étonner, certaine que son mari est au Cercle, comme il le lui dit.
Elle prend son ouvrage, car elle est remarquablement adroite
pour les travaux inutiles ; et chez elle, il lui faut toujours, entre les
doigts, un crochet ou une aiguille, créatrice d’incomparables
broderies.
Il n’y a pas de soirée qui lui paraisse meilleure que celles qu’elle
passe ainsi…
Les arbres du parc répandent, avec une bonne odeur de verdure,
une fraîcheur bienfaisante dans le petit salon où la lampe rayonne
une lueur d’or, sous l’abat-jour de soie jaune. Mme Seyntis lève la
tête, son aiguille piquée dans la soie de son métier :
— Guillemette, ne reste donc pas ainsi inoccupée à la fenêtre !
Prends ton ouvrage. Tu sais que j’ai en horreur les rêvasseries.
Guillemette se détourne. Sa svelte silhouette, habillée de blanc,
se découpe sur l’obscur velours du ciel constellé.
— Mère, je ne rêvasse pas… Je réfléchis…
— Et peut-on, ma fille, te demander à quoi ?…
Guillemette se rapproche et s’assoit sur une chaise basse, près
de sa mère, les coudes sur les genoux, le menton appuyé sur ses
mains croisées.
— Maman… je pensais que vous devriez emmener Mademoiselle
à Houlgate…
— Emmener Mademoiselle ! répète Mme Seyntis stupéfaite.
Quelle idée as-tu là ? Guillemette. Je n’ai aucun besoin d’elle.
Pourquoi l’emmener ?…
Au hasard, Guillemette lance :
— Pour faire un peu travailler Mad !
— Oh ! Guillemette, en voilà une invention ! fait Mad bondissant
d’horreur.
Guillemette ne se laisse pas troubler et continue :
— Et puis… et puis… elle se promènerait avec moi ! Vous savez
bien, maman, que vous regrettez toujours, dans l’été, que je n’aie
personne pour m’escorter sur les routes, puisque miss Murphy ne
marche plus ! M’selle serait un chaperon parfait !
Mme Seyntis considère sa fille avec une surprise grandissante.
Où Guillemette veut-elle en venir ? Qu’est-ce que cette fantaisie
d’emmener Mademoiselle que, d’ordinaire, elle déclare trop austère…
— Mon enfant, tu ne manqueras pas de société à Houlgate ; et
vraiment, la villa est trop vite remplie pour que je perde inutilement
une chambre en amenant une personne de plus à loger…
Ça, c’est le grave de la question ! Si la maîtresse de maison parle
impérieusement dans la pensée de Mme Seyntis, il n’y a rien à faire.
Et alors, Guillemette prend résolument son parti… Jusqu’alors, par
délicatesse, pour ne pas trahir la confidence faite dans une minute
de faiblesse, elle a essayé de taire le motif vrai de sa demande…
Mais si elle veut le succès, il faut dire la vérité, lui semble-t-il.
— Mère, je crois que vous feriez une bonne œuvre en emmenant
M’selle !
De nouveau, Mme Seyntis laisse tomber son ouvrage et regarde
Guillemette comme si elle venait de s’exprimer en une langue
étrangère.
— Comment, une bonne œuvre ?… Mais Mademoiselle n’est pas
dans la misère, que je sache !
— Non, maman… Mais elle n’est pas très fortunée… Et je
m’imagine qu’elle regrette — pour cause ! — les mois de vacances
où elle ne gagne rien…
Guillemette répète les propres paroles de Mademoiselle afin
qu’elles produisent sur sa mère l’impression qu’elles lui ont faite.
Mais Mme Seyntis n’a plus dix-huit ans ; elle est un peu blasée sur le
chapitre des difficultés et infortunes de la vie, d’autant qu’elle ne les
connaît pas par expérience. Si charitable et bienveillante qu’elle soit,
elle vit enfermée dans l’étroite chapelle où règnent les objets de son
culte, son mari et ses enfants ; et du reste des humains, elle
s’inquiète avec le secret détachement que nous avons pour ce qui
nous est étranger. Aussi réplique-t-elle, paisible :
— Ma petite fille, j’ai déjà beaucoup de bonnes œuvres à
soutenir ; et celle-là ne me paraissant pas d’une nécessité évidente,
je trouve plus sage d’en faire la petite économie.
— Oh ! maman, Mademoiselle n’est pas riche, nous avons la
chance de l’être beaucoup !… Alors, nous n’avons pas le droit de
faire des économies avec elle !
Les mots ont jailli de ses lèvres, avant même qu’elle ait réfléchi.
Une imperceptible rougeur effleure, telle une flamme, le visage
calme de Mme Seyntis. Mais comme elle juge tout à fait inadmissible
que sa fille émette un propos qui ressemble à une observation, elle
dit, un peu sèche :
— Tu parles comme une enfant, Guillemette, de ce que tu
ignores. Il n’est pas de petites économies, retiens-le bien. C’est
justement parce que nous avons de la fortune que nos charges sont
très grosses… Et elles vont encore s’accroître, puisque la situation
faite au clergé de France oblige tous les chrétiens à des sacrifices
pécuniaires.
Guillemette regarde la pointe luisante de ses souliers et pense, —
non sans un vague remords, — que les soucis de Mademoiselle la
touchent beaucoup plus que les épreuves du clergé de France,
auxquelles elle compatit avec une involontaire sérénité.
Mais un tel aveu serait d’un déplorable effet auprès de Mme
Seyntis qui en serait scandalisée au dernier chef. Le front penché
vers son métier, elle pique l’aiguille avec une sorte de nervosité ; et,
sans que Guillemette ait dit un mot, un brin découragée de si mal
réussir en sa diplomatie, elle reprend pour convaincre sa fille, pour
se convaincre elle-même qu’elle a raison :
— En somme, Mademoiselle gagne honorablement sa vie. Elle n’a
pas besoin que nous lui fassions la charité, j’en suis persuadée ; et,
quoi que tu t’imagines, je ne sais à quel propos, elle est
certainement très contente d’avoir un peu de liberté.
Guillemette serait ravie de pouvoir partager ces opinions
optimistes ; mais elle garde, trop vif encore, le souvenir du regard,
de l’accent de Mademoiselle. D’autre part, elle a l’intuition qu’il est
sage de ne pas insister davantage pour ce soir. Et, d’un ton
raisonnable, elle dit seulement :
— Maman, bien entendu, vous avez plus d’expérience que moi…
Tout de même, j’ai l’idée que si vous pouviez faire du bien à
Mademoiselle, cela porterait bonheur à André pour son examen !
Guillemette a jeté cela d’un air innocent. Mais, entre les cils, elle
observe sa mère et voit que ses paroles ont enfin porté. Cet examen
d’André, dont tout son amour maternel désire la réussite, est, en ce
moment, le cauchemar des jours et des nuits de Mme Seyntis. Elle
sait trop bien à quel point son cher petit cancre a besoin des
lumières de l’Esprit-Saint, pour n’être pas prête à tous les sacrifices
afin de les lui assurer, autant qu’il dépend d’elle. Guillemette s’en
doute bien, et c’est pourquoi, en l’intimité de son cœur point
égoïste, elle se réjouit d’avoir eu l’inspiration géniale de mettre en
avant l’intérêt d’André.
III

Ce jeune personnage est certes très loin de partager l’inquiétude


de sa mère. Il appartient à l’espèce des nombreux petits hommes
qui tiennent à se laisser vivre pour leur plus grand agrément et sont
toujours convaincus que leur bonne chance les fera réussir, sans
qu’ils aient à se préparer de favorables atouts.
Il s’est donc mis en route d’un cœur tranquille pour le lieu de son
épreuve. Mais les événements paraissent avoir altéré cette aimable
quiétude, si Guillemette en juge d’après les apparences, alors que,
rentrée de ses pérégrinations quotidiennes, elle pénètre dans le petit
salon où sa mère brode, devant son métier, très rouge, le visage un
peu contracté. André, assis à califourchon sur une chaise, près de la
fenêtre, a les yeux braqués sur un livre dont il ne tourne pas les
pages.
Elle interroge, pressentant la réponse :
— Eh bien !… Es-tu content ?
Les yeux toujours sur son livre, André grogne, maussade :
— Pas du tout !… Je vais être retoqué…
Il a une mine furieuse de chat battu qui serait comique si le
frémissement des lèvres ne trahissait une enfantine envie de pleurer,
comme font les petits dans leur détresse. Et c’est là la révélation
d’un état d’âme tout à fait anormal chez ce garçon insouciant.
— Mon enfant, pourquoi dis-tu que tu ne réussiras pas… Tu ne
peux pas le savoir ! proteste Mme Seyntis dont la voix est
tremblante.
Elle pique fiévreusement son aiguille dans sa broderie et fait,
sans en avoir conscience, des points irréguliers qui tombent, comme
des notes fausses, dans l’harmonie du dessin.
— Il me semble que ta version est presque tout à fait conforme
au texte que nous avons acheté.
— Oui, aux contre-sens près ! gémit André, dont l’humeur
rappelle le dos d’un porc-épic.
— Et ton devoir français ? questionne encore Guillemette qui, vu
la circonstance, ne se laisse pas rebuter par le ton d’André.
— Il est idiot comme le sujet donné !
En effet, la situation, en ces conditions, est mauvaise, et le
résultat apparaît probable. Guillemette le regrette surtout pour sa
mère, qui a l’air aussi lamentable que si André était en route vers
l’échafaud.
— Maman, est-ce que vous avez demandé au professeur d’André
si vraiment ses compositions sont mauvaises autant qu’il le dit ?
— Non, je ne pourrai trouver M. Rochet qu’après le dîner. J’irai
aussitôt, puisque ton père n’est justement pas à Paris. J’ai une
dépêche. Il ne sera de retour de Londres que demain soir.
— Alors, maman, ne vous tourmentez pas à l’avance. Peut-être
que M. Rochet va vous tranquilliser…
Guillemette se penche et met un tendre baiser sur le visage
désolé de sa mère ; puis, pour la distraire, elle entreprend de lui
raconter sa promenade. Mais Mme Seyntis ne peut pas être distraite.
Les paroles de sa fille sont, à son oreille, un bourdonnement de
mouche joyeuse. Elle est hypnotisée par l’échec probable de son
cher rejeton. Elle a cependant fait tout ce qui était en son pouvoir
pour attirer sur lui la faveur du ciel. Elle s’est répandue en
neuvaines, messes, prières, pour que les clartés de l’Esprit-Saint
viennent en aide à sa cervelle juvénile et mal lettrée. Et voici qu’elle
semble ne pas du tout devoir être exaucée.
Elle est trop bonne chrétienne pour murmurer. Mais, tout en
ombrant de mauve un iris, elle fouille dans sa conscience pour
découvrir comment elle a pu indisposer le ciel contre elle. Pourtant,
elle a obéi, par pure générosité, aux suggestions de Guillemette et,
après maintes réflexions, demandé à Mademoiselle de venir à
Houlgate faire travailler Mad et se promener avec Guillemette… Cela,
alors qu’elle n’avait, en vérité, nul besoin d’elle et voulait seulement
lui rendre service, — à l’intention du succès d’André.
Donc… pourquoi ne va-t-il pas réussir comme tant d’autres ni
plus savants ni plus travailleurs ?…
Comme elle rentrait avec lui, qu’elle était allée cueillir à la sortie
de l’épreuve, elle a rencontré son digne ami, le curé de sa paroisse,
qui habite la maison voisine de l’hôtel Seyntis. Il s’est répandu en
phrases réconfortantes pour la mère et le fils, et finalement a invité
André, en guise de distraction, à venir, le lendemain, déjeuner chez
lui avec quelques-uns de ses vicaires.
André, peu séduit, a sournoisement imprimé à la jupe de sa mère
des secousses expressives pour qu’elle refuse. Mais il semble à Mme
Seyntis que la protection du ciel descendra mieux sur André s’il a
reçu de pieux encouragements ; et elle accepte, avec des mots de
reconnaissance qui achèvent d’exaspérer la victime du sort.
Le dîner est plutôt morose. Mme Seyntis est rongée d’impatience.
André, fatigué, nerveux et affamé. Mad a tellement versé de larmes
sur la malchance de son frère bien-aimé, que ses yeux et son nez
ressemblent à des pelotes d’un rose accentué ; mais, tout de même,
elle aussi mange avec un triomphant appétit. Quant à Guillemette,
elle ne peut échapper au sentiment de justice qui lui fait penser
qu’André s’est vraiment acquis tous les droits pour mériter son
ajournement. Bien entendu, elle garde pour elle cette
malencontreuse conviction.
Dès que le dessert a circulé autour de la table, Mme Seyntis se
hâte de mettre un chapeau pour aller recevoir l’arrêt de M. Rochet ;
Welcome to our website – the ideal destination for book lovers and
knowledge seekers. With a mission to inspire endlessly, we offer a
vast collection of books, ranging from classic literary works to
specialized publications, self-development books, and children's
literature. Each book is a new journey of discovery, expanding
knowledge and enriching the soul of the reade

Our website is not just a platform for buying books, but a bridge
connecting readers to the timeless values of culture and wisdom. With
an elegant, user-friendly interface and an intelligent search system,
we are committed to providing a quick and convenient shopping
experience. Additionally, our special promotions and home delivery
services ensure that you save time and fully enjoy the joy of reading.

Let us accompany you on the journey of exploring knowledge and


personal growth!

textbookfull.com

You might also like