Wolfram 언어

하위 쿼리 수행하기

SQL에서의 매우 강력한 기술은, 데이터에 대해 더욱 복잡한 질문을 하기 위한 하위 쿼리의 사용에 있습니다. 이 예는 EntityFunction을 중첩함으로써 상관성이 있는 하위 쿼리와 상관성이 없는 하위 쿼리를 얼마나 쉽게 생성할 수 있는지를 보여줍니다.

풍부한 테이블 구조를 가진 데이터베이스를 예로 등록합니다.

최대 제품 가격에 가까운 제품에 대해 조사하려면, 먼저 집계를 하고 최대 제품 가격을 살펴보고 그 결과를 쿼리에 사용하는 방법을 생각할 수도 있습니다.

이 방법의 문제는 두 가지 쿼리를 할 경우 데이터베이스의 다른 사용자가 예고 없이 제품 가격을 변경 해서, 결과를 사용할 수 없게 될 수도 있다는 것입니다.

이 문제를 피하기 위해 자주 사용되는 해결책은 이러한 보조적인 계산을 인라인으로 실시하고, 계산은 단일 트랜잭션 내에서 이루어 지도록 하는 방법이 있습니다.

같은 식이 EntityFunction 식의 바디를 통하여 나타나게 되었기 때문에, 이 식은 확실히 데이터베이스에 의해 평가됩니다.

SQL에서 자주 사용되는 또 다른 패턴으로 일반적 상관성이 있는 하위 쿼리라 불리는 것이 있습니다. 함수형 프로그래밍에서 이것은 중첩된 순수 함수가 있고, 그 안쪽의 것이 외부의 파라미터에 의존하도록 하는 것과 같습니다. 여기에서 이러한 예를 단계별로 구축해봅니다.

여기에서 알고 싶은 것은, 어떤 제품이 그 가격을 제조 업체의 희망 소매 가격의 $15 이내의 범위로 설정한 제품을 가장 많이 가지는가 하는 것입니다. 우선 값 price의 $15 이내의 가격을 가진 제품을 나타내는 FilteredEntityClass를 구축해야 합니다.

이제 특별한 특성 "EntityCount"를 사용하여 그 수를 세어봅니다.

이것을 새로운 특성으로 제품의 클래스에 추가할 수 있습니다.

price의 값을 100으로 고정했기 때문에 쿼리는 "products"에 포함된 모든 실체에 대해 28의 값을 반환합니다.

다른 값의 반환을 원하는 경우에는 바깥쪽의 EntityFunction 슬롯에 의존하는 가격의 값이 필요합니다.

보시다시피, 이제 두 개의 중첩된 EntityFunction 식이 있으며, 가장 안쪽의 바디에는 두 개의 매개 변수가 포함됩니다.

각각의 제품에 대해 다른 결과를 얻을 수 있게 된 것을 확인할 수 있습니다.

이 새로운 특성을 사용하여 결과를 정렬하여 더 풍부한 결과를 얻을 수 있습니다.

관련 예제

de en es fr ja pt-br zh