1
Postgres에 대한 쿼리를 수행했으며 Postgres 9.4 이상에서 사용할 수있는 FILTER 절을 사용했지만 표준 SQL 절만 사용할 수 있다고 들었습니다.표준 SQL 절만 사용하도록 Postgres에서 쿼리 변경하기
Enterprise(id or name) || cow || sheep || chicken
MacDonals || 5 || 5 || 1
Burguer King || 7 || 4 || 2
KFC || 1 || 0 || 10
그래서 내가 POSTGRES 9.4에 기본 쿼리를 만든 :
내 쿼리는 도살되어 얼마나 많은 동물 학살 동물의 양이 각 기업 및 동물 유형에 대해 표시 할 것입니다 계산에 관한 것입니다 :
SELECT e.name
,COALESCE (COUNT(a.id) FILTER (WHERE a.type='cow'))
,COALESCE (COUNT(a.id) FILTER (WHERE a.type='sheep'))
,COALESCE (COUNT(a.id) FILTER (WHERE a.type='chicken'))
FROM enterprise e
INNER JOIN animal_enterprise ae
ON (ae.enterprise_id = e.id)
INNER JOIN animal a
ON (ae.animal_id=a.id)
GROUP BY e.id
그래서 각 유형의 동물에 대해 하위 쿼리를 시도했지만 제대로 작동하지 않습니다.
그건 이미 표준 SQL –
같았어요.하지만 Filter 절은 postgres 9.4 이상의 새로운 기능이고, mysql에서 이와 동등한 기능은 존재하지 않을 수도 있고 같은 방식으로 수행 될 수도 없습니다. 그런 다음 Case 절은 표준화 방식으로 쿼리를 작성하는 것이 더 적합합니다. – ruselli
필터 절 ***은 SQL 표준의 *** 부분입니다. 그리고 MySQL은 SQL 기능이나 SQL 표준과 관련해서는 거의 벤치 마크가 아닙니다. Postgres ** 및 ** MySQL에서 실행되는 명령문을 원하면 "표준 SQL 전용"명령문을 요청해서는 안됩니다. –