복붙노트

[SQL] PostgreSQL의 경우 카운트 조건

SQL

PostgreSQL의 경우 카운트 조건

나는 PostgreSQL의에 쿼리를 다음 있습니다 :

SELECT 
    COUNT(a.log_id) AS overall_count
FROM 
    "Log" as a, 
    "License" as b 
WHERE 
    a.license_id=7 
AND 
    a.license_id=b.license_id 
AND
    b.limit_call > overall_count
GROUP BY 
    a.license_id;

왜이 오류가 않습니다

내 테이블 구조 :

License(license_id, license_name, limit_call, create_date, expire_date)
Log(log_id, license_id, log, call_date)

나는 라이센스가 특정 월의 호출에 대한 한계에 도달했는지 확인합니다.

해결법

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

    1.

    SELECT a.license_id, a.limit_call
         , count(b.license_id) AS overall_count
    FROM   "License"  a
    LEFT   JOIN "Log" b USING (license_id)
    WHERE  a.license_id = 7 
    GROUP  BY a.license_id  -- , a.limit_call  -- add in old versions
    HAVING a.limit_call > count(b.license_id)
    
  2. ==============================

    2.쿼리가 열 별칭을 인식하지 않으며, 또한, 당신이 집계 한 후 행을 필터링하려는 곳. 시험:

    쿼리가 열 별칭을 인식하지 않으며, 또한, 당신이 집계 한 후 행을 필터링하려는 곳. 시험:

    SELECT 
    COUNT(a.log_id) AS overall_count
    FROM 
    "Log" as a, 
    "License" as b 
    WHERE 
    a.license_id=7 
    AND 
    a.license_id=b.license_id 
    GROUP BY 
    a.license_id
    having b.limit_call > count(a.log_id);
    

    이 집계 한 후 열을 다루는 것을 제외하고 HAVING 절은 where 절에 유사한 반면 곳 집계 전에 컬럼에 절 작동합니다.

    또한, 테이블 이름은 큰 따옴표로 묶 이유가있다?

  3. from https://stackoverflow.com/questions/8119489/postgresql-where-count-condition by cc-by-sa and MIT license