【问题标题】:sqlite Common table expressionsqlite 公用表表达式
【发布时间】:2021-10-02 18:40:52
【问题描述】:

我在做一个项目,有人要求我重写这个子查询

SELECT c.last_name, c.first_name, i.total_avg
  FROM customer AS c
  JOIN (SELECT customer_id, AVG(total) AS total_avg
          FROM invoice
         GROUP BY customer_id) AS i
    ON c.customer_id = i.customer_id;

使用 CTE。

我不知道如何链接这两个表。

你能帮帮我吗? 非常感谢!!!

【问题讨论】:

    标签: sqlite common-table-expression


    【解决方案1】:

    代替内部选择,将子查询声明为 CTE:

    WITH i AS (
        SELECT customer_id, AVG(total) AS total_avg
        FROM invoice
        GROUP BY customer_id
    ) SELECT c.last_name, c.first_name, i.total_avg
        FROM customer AS c
        JOIN i ON c.customer_id = i.customer_id;
    

    详情请见the documentation

    【讨论】:

    • 哦,好吧...我明白了!我应该在第二个 Select 子句之前加一个昏迷吗?谢谢!
    • 你的意思是在右括号之后?不,语法是WITH name AS (SELECT...) SELECT ...。我测试了代码,结果与您的原始代码相同。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-14
    • 2012-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多