복붙노트

[SQL] 'HAVING 절'알 수없는 열

SQL

'HAVING 절'알 수없는 열

내가 sakila 데이터베이스에 영화의 가장 긴 임대 기간을 찾을 필요가있다. 나는이 시도했다 :

  SELECT DISTINCT
      customer.first_name
    FROM
      rental,
      customer
    WHERE
      rental.customer_id = customer.customer_id
    GROUP BY
      rental.rental_id
    HAVING
      (
        rental.return_date - rental.rental_date
      ) =(
      SELECT
        MAX(countRental)
      FROM
        (
        SELECT
          (
            rental.return_date - rental.rental_date
          ) AS countRental
        FROM
          rental,
          customer
        GROUP BY
          rental.rental_id
      ) AS t1
    )

하지만 난 오류를 얻고있다 :

아무도 이유를 알고 있습니까? 나는 집계 데이터를해야하는데 열 .. 내가 무엇을 놓치고를 사용했다

해결법

  1. ==============================

    1.문서에 기록 된대로

    문서에 기록 된대로

    당신은 RETURN_DATE를 지정하고 선택 절에 rental_date해야합니다.

    두 가지 옵션이 있습니다 :

    SELECT DISTINCT
      customer.first_name,
      rental.return_date,
      rental.rental_date
    FROM
      rental,
      customer
    WHERE
      rental.customer_id = customer.customer_id
    GROUP BY
      rental.rental_id
    HAVING
      (
        rental.return_date - rental.rental_date
      ) =(
      ...
    

    또는

    SELECT DISTINCT
      customer.first_name,
      (rental.return_date - rental.rental_date) as rental_duration
    FROM
      rental,
      customer
    WHERE
      rental.customer_id = customer.customer_id
    GROUP BY
      rental.rental_id
    HAVING
      rental_duration =(
      ...
    

    모두 잘 작동합니다.

  2. from https://stackoverflow.com/questions/36105812/unknown-column-in-having-clause by cc-by-sa and MIT license