2015-01-01 2 views
0

나는 두 부분으로 구성된 배열을 가지고 있는데, 첫 번째 부분부터 최대 값을 얻고 싶습니다. 그러나 내가 할 때 max($row)은 최대 값을 반환합니다. 날짜가 더 높기 때문입니다. 시도 할 때 max(array_column($row, 'SUM(DISTRIBUTED_AMOUNT/EXCHANGE_RATE)'));이 오류가 발생합니다 max(): Array must contain at least one element 첫 번째 부분만을 기반으로하는 방법이 있습니까?배열의 한 부분에서 MySQL 쿼리의 최대 값

Array 
(
    [SUM(DISTRIBUTED_AMOUNT/EXCHANGE_RATE)] => 19.1630000055071 
    [DATE] => 2013-11 
) 
+0

이 배열은 다차원 배열이며, SUM (DISTRIBUTED_AMOUNT/EXCHANGE_RATE)에 가장 큰 값을 갖는 하위 배열을 원하십니까? [이 대답은 아마도 당신이 쫓아 온 것일 것입니다] (http://stackoverflow.com/a/17339754/541091) –

+1

다차원이라면 컨텍스트에 대한 배열을 조금 더 게시하고 결과물을 명확히해야합니다. 전체 하위 배열이든, 아니면 '19.1630000055071'과 같은 단일 값이든 상관 없습니다. PHP 5.5를 사용한다면 쉽게 할 수 있습니다. max (array_column()) –

+0

다차원 배열인데, array_column이 옳은 것처럼 보이므로이'max (array_column ($ row, 'SUM (DISTRIBUTED_AMOUNT)/EXCHANGE_RATE) '));'이 오류가 발생합니다. max() : 배열은 적어도 하나의 요소를 포함해야합니다.' –

답변

0

원하는 속성을 추적하면서 foreach를 사용하십시오. 예를 들면 날짜 가져 가라. MaxDate = FirstRow [Date] 변수를 유지하십시오. 그런 다음 모든 항목을 반복하고 실제 행이 실제 MaxDate보다 높은지 확인합니다. 이것은 무차별적인 방식이지만 확실하게 작동합니다. SQL을 사용하여 실제로 최대 값을 취할 수도 있습니다.

SELECT MAX(something) FROM 
     SELECT SUM(DISTRIBUTED_AMOUNT/EXCHANGE_RATE) AS something 
     FROM whatever; 

PHP 브 루트 포스 : 당신은 결과의 모든 행을 사용할 필요가

$max = $result[0]['SUM(DISTRIBUTED_AMOUNT/EXCHANGE_RATE)']; 
foreach($result as $row){ 
    if($row['SUM(DISTRIBUTED_AMOUNT/EXCHANGE_RATE)'] > $max) 
     max = $row['SUM(DISTRIBUTED_AMOUNT/EXCHANGE_RATE)']; 
} 

echo $max; 

참고. 조회 결과에 요소가 있는지 여부를 점검하십시오.

+0

동일한 표현식에 두 개의 집계를 사용할 수 없습니다. 서브 쿼리를 사용해야한다 - 내부 쿼리는'SUM() AS whatever'이고 외부 쿼리는'MAX (뭐든간에)'를한다. – Barmar

+0

당신 말이 맞아요. 죄송 해요. 중첩 된 선택 항목을 사용해야합니다. –

+0

다른 쿼리를 수행하지 않고 이미 기존 쿼리에서 처리하려고하므로 기존 어레이에서이 작업을 수행해야합니다. –