[SQL] SQL 오류 : 골재의 오용
SQLSQL 오류 : 골재의 오용
SQLite는 버전 3.4.0 집계 함수 잘못은 무엇입니까? 또한, 나는 ORDER BY가 잘 작동하지 않습니다 생각한다. 이 문제를 어떻게 재 작성?
sqlite> SELECT p1.domain_id, p2.domain_id, COUNT(p1.domain_id) AS d1, COUNT(p2.domain_id) AS d2
...> FROM PDB as p1, Interacting_PDBs as i1, PDB as p2, Interacting_PDBs as i2
...> WHERE p1.id = i1.PDB_first_id
...> AND p2.id = i2.PDB_second_id
...> AND i1.id = i2.id
...> AND d1>100
...> AND d2>100
...> ORDER BY d1, d2;
SQL error: misuse of aggregate:
sqlite>
해결법
-
==============================
1.집계 함수 (합계 / 수 / ...)를 사용하는 경우, 당신은 또한 GROUP BY 절을 이용해야한다.
집계 함수 (합계 / 수 / ...)를 사용하는 경우, 당신은 또한 GROUP BY 절을 이용해야한다.
당신이 집계 한 결과에 필터링 할 때 그 옆에는, 당신은 WHERE 절에서 그렇게 할 수는 없지만, HAVING 절에서 그렇게해야합니다.
SELECT p1.domain_id, p2.domain_id, COUNT(p1.domain_id) AS d1, COUNT(p2.domain_id) AS d2 FROM PDB as p1, Interacting_PDBs as i1, PDB as p2, Interacting_PDBs as i2 WHERE p1.id = i1.PDB_first_id AND p2.id = i2.PDB_second_id AND i1.id = i2.id GROUP BY p1.domain_Id, p2.domain_Id HAVING d1 > 100 AND d2 > 100 ORDER BY d1, d2;
-
==============================
2.이것에 대한 짧은 버전의 수정은 다음과 같습니다
이것에 대한 짧은 버전의 수정은 다음과 같습니다
당신이 COUNT / SUM과 같은 기능을 사용하는 경우, 대신 WHERE의 HAVING 사용해야합니다.
from https://stackoverflow.com/questions/648083/sql-error-misuse-of-aggregate by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 당신은 어떻게 백업 할 수와 같은 서버에 복사본으로 데이터베이스를 복원? (0) | 2020.06.08 |
---|---|
[SQL] 테이블 반환 함수 - 출력에 무시로 주문 (0) | 2020.06.07 |
[SQL] 왜 오라클 SQL은 우리가 GROUP BY 절에 열 별칭을 사용하는 것을 허용하지 않습니다? (0) | 2020.06.07 |
[SQL] MySQL의 와일드 카드 * 및 % (0) | 2020.06.07 |
[SQL] 어디에서 검색 조건을 '%'를 사용하여 SQL 'LIKE'쿼리 '%'포함 (0) | 2020.06.07 |