<?xml version="1.0" encoding="UTF-8"?>
<!--
  Public, indexable routes only. Cross-checked against src/router/routes.ts,
  public/robots.txt and public/_headers on 2026-09-04 — every URL below
  resolves to a real public route and none of them carry an
  `X-Robots-Tag: noindex`. Auth surfaces (/login, /reset-password) and
  signed-in-only routes (/dashboard, /questions, /challenge/:id, /account,
  /upgrade, /schema, /courses) are deliberately absent: they are noindexed in
  public/_headers, and listing a noindexed URL here would raise a "Submitted
  URL marked 'noindex'" error in Search Console.
  /learn/topic/:slug is dynamic and is left to internal linking from /learn.
  /learn/<slug> lesson pages are listed only while their lesson is indexable
  (src/lib/lessonPages.ts); the rest are noindexed at build time, and
  src/lib/__tests__/lessonPages.test.ts fails if this list and that rule disagree.
-->
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://query-u.com/</loc>
    <lastmod>2026-08-30</lastmod>
    <changefreq>weekly</changefreq>
    <priority>1.0</priority>
  </url>

  <!-- Primary acquisition pages: the practice hub and the public, no-signup
       first-query page. -->
  <url>
    <loc>https://query-u.com/sql-practice</loc>
    <lastmod>2026-08-30</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.9</priority>
  </url>
  <url>
    <loc>https://query-u.com/start</loc>
    <lastmod>2026-08-23</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.9</priority>
  </url>
  <url>
    <loc>https://query-u.com/learn</loc>
    <lastmod>2026-09-23</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.9</priority>
  </url>

  <!-- Learn lessons, one page each, in curriculum order. -->
  <url>
    <loc>https://query-u.com/learn/arrays-string-agg-json</loc>
    <lastmod>2026-09-23</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://query-u.com/learn/distinct-on-lateral</loc>
    <lastmod>2026-09-23</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://query-u.com/learn/window-frames-filter</loc>
    <lastmod>2026-09-23</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://query-u.com/learn/indexes-views</loc>
    <lastmod>2026-09-23</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://query-u.com/learn/grouping-sets-rollup-cube</loc>
    <lastmod>2026-09-23</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://query-u.com/learn/statistical-aggregates</loc>
    <lastmod>2026-09-23</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://query-u.com/learn/calendar-gaps-stopouts</loc>
    <lastmod>2026-09-23</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://query-u.com/learn/higher-ed-analytics</loc>
    <lastmod>2026-09-23</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>

  <!-- Long-tail topic guides. -->
  <url>
    <loc>https://query-u.com/sql-basics</loc>
    <lastmod>2026-09-04</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://query-u.com/sql-joins</loc>
    <lastmod>2026-09-04</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://query-u.com/sql-having-vs-where</loc>
    <lastmod>2026-09-03</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://query-u.com/sql-group-by-multiple-columns</loc>
    <lastmod>2026-09-03</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://query-u.com/sql-group-by-month-date-trunc</loc>
    <lastmod>2026-09-03</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://query-u.com/sql-cte-with-clause</loc>
    <lastmod>2026-09-03</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://query-u.com/sql-case-when-conditional-aggregation</loc>
    <lastmod>2026-09-03</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://query-u.com/sql-rank-vs-dense-rank-vs-row-number</loc>
    <lastmod>2026-09-03</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://query-u.com/sql-practice-sites-compared</loc>
    <lastmod>2026-08-30</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>

  <!-- Course landing page for the "Build the Warehouse" database-design
       track. Public and indexable; the course itself lives under /courses/*
       which stays noindexed. -->
  <url>
    <loc>https://query-u.com/learn-database-design</loc>
    <lastmod>2026-09-03</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>

  <url>
    <loc>https://query-u.com/leaderboard</loc>
    <lastmod>2026-08-21</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.7</priority>
  </url>

  <url>
    <loc>https://query-u.com/privacy</loc>
    <lastmod>2026-05-06</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.3</priority>
  </url>
  <url>
    <loc>https://query-u.com/terms</loc>
    <lastmod>2026-05-06</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.3</priority>
  </url>
</urlset>
