Examples:

Significant Floods of the 20th Century
[M, million; B, billion]
Flood Type Map no. Date Area or stream with flooding Reported deaths Approximate cost (uninflated) Comments
Regional flood 1 Mar.-Apr. 1913 Ohio, statewide 467 $143M Excessive regional rain.
2 Apr.-May 1927 Mississippi River from Missouri to Louisiana unknown $230M Record discharge downstream from Cairo, Illinois.
3 Mar. 1936 New England 150+ $300M Excessive rainfall on snow.
4 July 1951 Kansas and Neosho River Basins in Kansas 15 $800M Excessive regional rain.
5 Dec. 1964 - Jan. 1965 Pacific Northwest 47 $430M Excessive rainfall on snow.
Flash flood 21 June 14, 1903 Willow Creek in Oregon 225 unknown City of Heppner, Oregon, destroyed.
22 June 9-10, 1972 Rapid City, South Dakota 237 $160M 15 inches of rain in 5 hours.
23 July 31, 1976 Big Thompson and Cache la Poudre Rivers in Colorado 144 $39M Flash flood in canyon after excessive rainfall.
Ice-jam flood 25 May 1992 Yukon River Alaska 0 unknown 100-year flood on Yukon River.
Storm-surge flood 26 Sept. 1990 Galveston, Texas 6,000+ unknown Hurricane.
27 Sept. 1938 Northeast United States 494 $360M Hurricane.
Dam-failure flood 29 Feb. 2, 1972 Buffalo Creek in West Virginia 125 $60M Dam failure after excessive rainfall.
30 June 5, 1976 Teton River in Idaho 11 $400M Earthen dam breached.
Mudflow flood 32 May 18, 1980 Toutle and lower Cowlitz Rivers in Washington 60 unknown Result of eruption of Mt. St. Helens.
<table border="1" summary="This table lists the 32 most significant floods
of the 20th Century grouped into 6 types of floods: Regional, flash,
ice-jam, storm-surge, dam-failure, and mudflow. The majority of the
floods (20) are listed as Regional floods. There are between one and
four floods in each of the other 5 categories.  ">

The summary attribute includes the following information:

<caption>Significant Floods of the 20th Century <br />
[M, million; B, billion]</caption>

The caption includes the title of the table, and a key to abbreviations used in the table for Millions and Billions. This information is needed by all users of the table, and so is in the visible caption.

Alternatively, the information in the summary of this table could have been placed in a details section of the caption.

<caption>Significant Floods of the 20th Century <br />
[M, million; B, billion]<details>This table lists the 32 most significant floods of the 20th Century grouped into 6 types of floods: Regional, flash, ice-jam, storm-surge, dam-failure, and mudflow. The majority of the floods (20) are listed as Regional floods. There are between one and four floods in each of the other 5 categories.</details></caption>

In addition, this table makes use of structural markup, to allow non-visual user agents to expose the table to their users.

<tbody>
<tr>
<th id="type">Flood Type</th>
<th id="map">Map no.</th>
<th id="date">Date</th>
<th id="area">Area or stream with flooding</th>
<th id="deaths">Reported deaths</th>
<th id="cost">Approximate cost (uninflated)</th>
<th id="comments">Comments</th>
</tr>

TH elements with ID attributes are used to associate cells with their related headers. 

<tr>
<th rowspan="5" id="regional" scope="row">Regional flood</th>
<td headers="regional map">1</td>
<td headers="regional date">Mar.-Apr. 1913</td>
<td headers="regional area">Ohio, statewide</td>
<td headers="regional deaths">467</td>
<td headers="regional cost">$143M</td>
<td headers="regional comments">Excessive regional rain.</td>
</tr>

The first cell in this table is also a TH.

<tr>
<td headers="regional map">2</td>
<td headers="regional date">Apr.-May 1927</td>
<td headers="regional area">Mississippi River from Missouri to Louisiana</td>
<td headers="regional deaths">unknown</td>
<td headers="regional cost">$230M</td>
<td headers="regional comments">Record discharge downstream from Cairo, Illinois.</td>
</tr>
<tr>
<td headers="regional map">3</td>
<td headers="regional">Mar. 1936</td>
<td headers="regional">New England</td>
<td headers="regional">150+</td>
<td headers="regional">$300M</td>
<td headers="regional">Excessive rainfall on snow.</td>
</tr>
<tr>
<td headers="regional map">4</td>
<td headers="regional">July 1951</td>
<td headers="regional">Kansas and Neosho River Basins in Kansas</td>
<td headers="regional">15</td>
<td headers="regional">$800M</td>
<td headers="regional">Excessive regional rain.</td>
</tr>
<tr>
<td headers="regional map">5</td>
<td headers="regional">Dec. 1964 - Jan. 1965</td>
<td headers="regional">Pacific Northwest</td>
<td headers="regional">47</td>
<td headers="regional">$430M</td>
<td headers="regional">Excessive rainfall on snow.</td>
</tr>
<tr>
<th rowspan="3" scope="row">Flash flood</th>
<td>21</td>
<td>June 14, 1903</td>
<td>Willow Creek in Oregon</td>
<td>225</td>
<td>unknown</td>
<td>City of Heppner, Oregon, destroyed.</td>
</tr>
<tr>
<td>22</td>
<td>June 9-10, 1972</td>
<td>Rapid City, South Dakota</td>
<td>237</td>
<td>$160M</td>
<td>15 inches of rain in 5 hours.</td>
</tr>
<tr>
<td>23</td>
<td>July 31, 1976</td>
<td>Big Thompson and Cache la Poudre Rivers in Colorado</td>
<td>144</td>
<td>$39M</td>
<td>Flash flood in canyon after excessive rainfall.</td>
</tr>
<tr>
<th scope="row">Ice-jam flood</th>
<td>25</td>
<td>May 1992</td>
<td>Yukon River Alaska</td>
<td>0</td>
<td>unknown</td>
<td>100-year flood on Yukon River.</td>
</tr>
<tr>
<th rowspan="2" scope="row">Storm-surge flood</th>
<td>26</td>
<td>Sept. 1990</td>
<td>Galveston, Texas</td>
<td>6,000+</td>
<td>unknown</td>
<td>Hurricane.</td>
</tr>
<tr>
<td>27</td>
<td>Sept. 1938</td>
<td>Northeast United States</td>
<td>494</td>
<td>$360M</td>
<td>Hurricane.</td>
</tr>
<tr>
<th rowspan="2" scope="row">Dam-failure flood</th>
<td>29</td>
<td>Feb. 2, 1972</td>
<td>Buffalo Creek in West Virginia</td>
<td>125</td>
<td>$60M</td>
<td>Dam failure after excessive rainfall.</td>
</tr>
<tr>
<td>30</td>
<td>June 5, 1976</td>
<td>Teton River in Idaho</td>
<td>11</td>
<td>$400M</td>
<td>Earthen dam breached.</td>
</tr>
<tr>
<th scope="row">Mudflow flood</th>
<td>32</td>
<td>May 18, 1980</td>
<td>Toutle and lower Cowlitz Rivers in Washington</td>
<td>60</td>
<td>unknown</td>
<td>Result of eruption of Mt. St. Helens.</td>
</tr>
</tbody>
</table>

The following table has an unusual layout which will not be obvious to many users who can see it. It might benefit from a visible description explaining to the way the table is laid out, something like "Characteristics are given in the second column, with the negative side in the left column and the positive side in the right column". In this case, it is best to describe the table in visible text. The text MUST be marked up in such a way that assistive technologies can determine programmatically that it is a description for the table.

For instance, the following table:

Characteristics with positive and negative sides
Negative Characteristic Positive
Sad Mood Happy
Failing Grade Passing

...might benefit from a description explaining the way the table is laid out, something like "Characteristics are given in the second column, with the negative side in the left column and the positive side in the right column".

There are a variety of ways to include this information, such as:

In prose, surrounding the table.  In this case, the author MUST link the prose to the table via the aria-describedby attribute
<p id="foo">In the following table, characteristics are given in the second
column, with the negative side in the left column and the positive
side in the right column.</p>
<table aria-describedby="foo">
 <caption>Characteristics with positive and negative sides</caption>
 <thead>
  <tr>
   <th id="n"> Negative
   <th> Characteristic
   <th> Positive
 <tbody>
  <tr>
   <td headers="n r1"> Sad
   <th id="r1"> Mood
   <td> Happy
  <tr>
   <td headers="n r2"> Failing
   <th id="r2"> Grade
   <td> Passing
</table>
In the table's caption
<table>
 <caption>
  <strong>Characteristics with positive and negative sides.</strong>
  <p>Characteristics are given in the second column, with the
  negative side in the left column and the positive side in the right
  column.</p>
 </caption>
 <thead>
  <tr>
   <th id="n"> Negative
   <th> Characteristic
   <th> Positive
 <tbody>
  <tr>
   <td headers="n r1"> Sad
   <th id="r1"> Mood
   <td> Happy
  <tr>
   <td headers="n r2"> Failing
   <th id="r2"> Grade
   <td> Passing
</table>
In the table's caption, in a details element
<table>
 <caption>
  <strong>Characteristics with positive and negative sides.</strong>
  <details>
   <dt>Help</dt>
   <dd>
    <p>Characteristics are given in the second column, with the
    negative side in the left column and the positive side in the right
    column.</p>
   </dd>
  </details>
 </caption>
 <thead>
  <tr>
   <th id="n"> Negative
   <th> Characteristic
   <th> Positive
 <tbody>
  <tr>
   <td headers="n r1"> Sad
   <th id="r1"> Mood
   <td> Happy
  <tr>
   <td headers="n r2"> Failing
   <th id="r2"> Grade
   <td> Passing
</table>
Next to the table, in the same figure
<figure>
 <dt>Characteristics with positive and negative sides</dt>
 <dd>
  <p>Characteristics are given in the second column, with the
  negative side in the left column and the positive side in the right
  column.</p>
  <table>
   <thead>
    <tr>
     <th id="n"> Negative
     <th> Characteristic
     <th> Positive
   <tbody>
    <tr>
     <td headers="n r1"> Sad
     <th id="r1"> Mood
     <td> Happy
    <tr>
     <td headers="n r2"> Failing
     <th id="r2"> Grade
     <td> Passing
  </table>
 </dd>
</figure>
Next to the table, in a figure's dt
<figure>
 <dt>
  <strong>Characteristics with positive and negative sides</strong>
  <p>Characteristics are given in the second column, with the
  negative side in the left column and the positive side in the right
  column.</p>
 </dt>
 <dd>
  <table>
   <thead>
    <tr>
     <th id="n"> Negative
     <th> Characteristic
     <th> Positive
   <tbody>
    <tr>
     <td headers="n r1"> Sad
     <th id="r1"> Mood
     <td> Happy
    <tr>
     <td headers="n r2"> Failing
     <th id="r2"> Grade
     <td> Passing
  </table>
 </dd>
</figure>

Authors may also use other techniques, or combinations of the above techniques, as appropriate.

The best option, of course, rather than writing a description explaining the way the table is laid out, is to adjust the table such that no explanation is needed.

In the case of the table used in the examples above, a simple rearrangement of the table so that the headers are on the top and left sides removes the need for an explanation as well as removing the need for the use of headers attributes:

<table>
 <caption>Characteristics with positive and negative sides</caption>
 <thead>
  <tr>
   <th> Characteristic
   <th> Negative
   <th> Positive
 <tbody>
  <tr>
   <th> Mood
   <td> Sad
   <td> Happy
  <tr>
   <th> Grade
   <td> Failing
   <td> Passing
</table>