Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql CTE查询失败,出现关于未知列名的错误_Sql - Fatal编程技术网

Sql CTE查询失败,出现关于未知列名的错误

Sql CTE查询失败,出现关于未知列名的错误,sql,Sql,我正在学习CTE,我在做一个练习。请看下表: 捐赠 计划 支持者 目的是显示支持者的名字和姓氏,以及尚未成立的项目数量和金额

我正在学习CTE,我在做一个练习。请看下表:

捐赠

计划

支持者

目的是显示支持者的名字和姓氏,以及尚未成立的项目数量和金额<他们创建的最小金额

我的SQL:

WITH projects AS
( 
    SELECT 
        first_name AS firstName,
        last_name AS lastName,
        project_id,
        SUM(amount) AS amountSum,
        minimal_amount
    FROM 
        donation d
    INNER JOIN 
        project p ON p.id = d.project_id
    INNER JOIN 
        supporter s ON s.id = p.author_id
    GROUP BY 
        FIRST, LAST, project_id
)
SELECT 
    firstName,
    lastName,
    COUNT(project_id)
FROM 
    projects
WHERE 
    amountSum < minimal_amount;
我有一个错误:

第一列不存在


您在GROUP BY FIRST、LAST中提到列名是错误的,这在您的表中不存在,并且最小金额也需要包含在GROUP BY子句中,因为您没有对该列使用任何聚合

    WITH projects AS
      ( 
       SELECT first_name AS firstName,
               last_name AS lastName,
               project_id,
               sum(amount) AS amountSum,
               minimal_amount
       FROM donation d
       INNER JOIN project p ON p.id = d.project_id
       INNER JOIN supporter s ON s.id = p.author_id
       GROUP BY first_name ,
                last_name ,
                project_id,minimal_amount
)
    SELECT firstName,
           lastName,
           count(project_id)
    FROM projects
    WHERE amountSum < minimal_amount
   group by firstName,
           lastName

你的dbms是什么?你的groupby应该是名字和姓氏吗?应该是通用的,但我使用Postres@这是我的主意。在练习的描述中没有这样的要求。为什么我的问题被否决了?我得到了错误:column projects.firstname必须出现在GROUP BY子句中或用于聚合函数中。@menteith yap编辑的答案需要在GROUP BY子句中找到
+----+------------+-----------+
| id | first_name | last_name |
+----+------------+-----------+
| 1  | Marlene    | Wagner    |
| 2  | Lonnie     | Goodwin   |
| 3  | Sophie     | Peters    |
| 4  | Edwin      | Paul      |
| 5  | Hugh       | Thornton  |
| 6  | Dianne     | Harris    |
+----+------------+-----------+
WITH projects AS
( 
    SELECT 
        first_name AS firstName,
        last_name AS lastName,
        project_id,
        SUM(amount) AS amountSum,
        minimal_amount
    FROM 
        donation d
    INNER JOIN 
        project p ON p.id = d.project_id
    INNER JOIN 
        supporter s ON s.id = p.author_id
    GROUP BY 
        FIRST, LAST, project_id
)
SELECT 
    firstName,
    lastName,
    COUNT(project_id)
FROM 
    projects
WHERE 
    amountSum < minimal_amount;
    WITH projects AS
      ( 
       SELECT first_name AS firstName,
               last_name AS lastName,
               project_id,
               sum(amount) AS amountSum,
               minimal_amount
       FROM donation d
       INNER JOIN project p ON p.id = d.project_id
       INNER JOIN supporter s ON s.id = p.author_id
       GROUP BY first_name ,
                last_name ,
                project_id,minimal_amount
)
    SELECT firstName,
           lastName,
           count(project_id)
    FROM projects
    WHERE amountSum < minimal_amount
   group by firstName,
           lastName