문제

MySQL을 시뮬레이션 할 Informix의 SQL에서 쿼리를 찾고 group_concat 기능.

MySQL이란 무엇입니까? group_concat 이는 그룹의 모든 구성원을 열거하는 것입니다.

따라서 다음과 같이 데이터를 사용하면 다음과 같습니다.

orderid:itemName:price
      1:Paper   :10
      1:Pen     :5
      2:Sugar   :15

다음 쿼리 :

select group_concat(itemName), sum(price)
from order_details
group by orderid

생산 :

items    :price
Paper,Pen:15
Sugar    :15

Informix에서 이것을 달성하는 가장 효율적인 방법은 무엇입니까? 저장된 절차를 사용해야합니까?

도움이 되었습니까?

해결책

이를 위해 사용자 정의 집계를 정의해야합니다. 네 부분이 있습니다 - 네 가지 기능 (검색 집계를 만듭니다 에서 IDS 12.10 정보 센터):

  1. 이니셜 라이저 (init)
  2. 반복자 (iter)
  3. 결합 (결합)
  4. 파이널 라이저 (최종)

그것은 자본의 공식 용어이며, 그것은 적당히 직관적입니다. 평균 계산을 생각하십시오.

  1. 이니셜 라이저 : set sum = 0; n = 0
  2. 반복자 : set sum += x; n ++
  3. 결합기 : set sum = sum1 + sum2; n = n1 + n2를 설정하십시오
  4. Finalizer : result = sum / n- n = 0 (제로 디바이드) 점검

결합기는 병렬 실행의 중간 결과를 결합하는 데 사용됩니다. 각 병렬 실행은 반복자로 시작하여 중간 결과를 생성합니다. 병렬 실행이 완료되면 별도의 값 세트가 결합기와 결합됩니다.

저장된 절차 또는 C 또는 Java UDR을 사용하여 IDS에서 유사한 코드를 작성할 수 있습니다.

SO 질문을 참조하십시오 하나에서 많은 관계를 2 개의 열로 표시 - 1 개의 고유 행 (ID & Comma 분리 목록) 문자열 기반 Group_Concat () 함수의 경우 Informix에서 구현되었습니다.

다른 팁

이를 위해 Informix에는 내장 기능이 없습니다. 다른 주류 RDBM이 기괴한 집계 기능을 가지고 있습니까? 쿼리에서 선택되지 않은 열로 주문하는 것은 약간 모호하지만 그룹화? 그것은 내 새로운 것입니다.

그러한 데이터 세트를 생성하려면 저장된 절차 또는 UDR을 작성해야합니다. 솔직히 말해서, 나는 이것을 데이터베이스에서 시도하지 않을 것입니다. 이 출력의 소비자에게 가장 적합한 작업처럼 보입니다 (즉, 응용 프로그램/웹 앱/보고서 작성기 등).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top