<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>CTE on 老张开工了</title>
    <link>/cte/</link>
    <description>Recent content in CTE on 老张开工了</description>
    <generator>Hugo</generator>
    <language>zh-cn</language>
    <lastBuildDate>Mon, 17 Feb 2025 10:00:00 +0800</lastBuildDate>
    <atom:link href="/cte/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>CTE 与递归查询</title>
      <link>/posts/2025/02/cte-and-recursive/</link>
      <pubDate>Mon, 17 Feb 2025 10:00:00 +0800</pubDate>
      <guid>/posts/2025/02/cte-and-recursive/</guid>
      <description>WITH（CTE，Common Table Expression）可以让你在 SQL 中像写程序一样组织逻辑——分步骤、命名中间结果、复用。递归 CTE 更是处理层级数据的利器。&#xA;普通 CTE CTE 把复杂的查询拆成多个可读的步骤：&#xA;-- 统计每个城市的客户消费情况 WITH city_stats AS ( SELECT c.city, COUNT(DISTINCT o.customer_id) AS 客户数, SUM(o.total_amount) AS 总消费 FROM customers c LEFT JOIN orders o ON c.customer_id = o.customer_id AND o.status = &amp;#39;已完成&amp;#39; GROUP BY c.city ), avg_city AS ( SELECT AVG(总消费) AS 城市平均消费 FROM city_stats ) SELECT cs.city, cs.客户数, cs.总消费, ROUND(cs.总消费 / ac.城市平均消费 * 100, 2) AS 相对占比 FROM city_stats cs CROSS JOIN avg_city ac ORDER BY cs.</description>
    </item>
  </channel>
</rss>
