2012-11-28 5 views
0

Math.max(int, int)을 사용하여 가장 높은 2 개의 정수를 반환 할 수 있지만 이름이 포함 된 SQL 테이블이 있다고 가정 할 때 어떤 형식의 순위/점수 정수), 어떻게 그 점수를 취할 수 있고, 가장 높은 점수를 얻을 수 있습니까?집합 또는 목록에서 가장 높은 int를 반환하는

또는 어떻게 최고에서 최저로 정렬 할 수 있습니까? 그렇다면 나머지는 처리 할 수 ​​있습니까?

+0

또는 및. 가능한 경우 하나의 작업 또는 둘 다 의미 : –

답변

4

간단한 MySQL 쿼리로이 작업을 수행 할 수 있습니다.

예 :

SELECT * FROM table_name ORDER BY score DESC LIMIT 1; 

첫 번째 행은 가장 높은 것이다.

+1

또는 'SELECT max (score) FROM table_name'을 수행 할 수 있습니다. – jahroy

+0

응용 프로그램이 아니라 데이터베이스에서이 작업을 수행하는 것이 좋습니다. –

+0

그런 다음 최소한 'LIMIT 1'을 사용해야합니다. 그러면 SQL 데이터베이스가이를 더 잘 최적화 할 수 있습니다. –

2

음, 정렬은 최대 값을 찾는 것보다 비용이 많이 듭니다. 최대 값을 찾을 수

아마도 가장 인기있는 코드는 다음과 같습니다

int max = data[0]; 
for (int i = 1; i < data.length; i++) { 
    max = Math.max(max, data[i]); 
} 

이런 식으로 일을 아무 문제가 없습니다.

정렬은 작동하지만 정렬은 O(n log n)이고 분명히 단지 O(n)입니다.

+0

데이터 집합의 크기와 데이터베이스의 구조에 따라 다릅니다. 순위 열에 인덱스가 있다면 (아마도 나쁜 생각은 아닙니다), 최대 결과를 검색하는 데'O (log (n))'시간이 걸릴 것입니다. 인덱스가없는 경우에도 고도로 최적화 된 데이터베이스 엔진을 사용하여 정렬하면 전체 테이블을 Java로 전달하고 검색 할 때보 다 더 적은 양의 데이터를 빠르게 처리 할 수 ​​있습니다. –

+0

그의 질문은 너무 애매했기 때문에 그가 데이터베이스 솔루션에만 관심이 있다는 것은 분명하지 않았습니다. 물론, 좋은 데이터베이스 엔진을 가지고 있다면, 'max' 또는'order by, limit 1'을 사용해야합니다. 하지만 그 질문은 사소한 것이었을 것입니다 ... –

관련 문제