안녕하세요. 저는 이와 같은 SQL 스크립트가 있습니다. 대본의 의도는 오늘날의 가장 높은 가치를 창출하는 것입니다. 그러나 스크립트는 의도하지 않은 결과를 산출합니다. 누구든지 내 코드를보고 그 코드의 잘못된 부분을 볼 수있게 도와 줄 수 있습니까?SQL. 최대 값을 가진 타임 스탬프 문제
스크립트
SELECT MAX(Value),
TIMESTAMP,
fooditem,
cashcurren
FROM farm1
WHERE r.timestamp > 1405987200
AND r.timestamp <= (1405987200 + 86400)
AND fooditem = '2'
AND cashcurren = '10'
GROUP BY timestamp, fooditem, cashcurren;
의도하지 않은 결과
Value Timestamp fooditem cashcurren
200 1406029354 2 10
84 1406034965 2 10
536 1406034973 2 10
70 1406035006 2 10
63 1406035025 2 10
내가 원하는 결과
값 타임 스탬프 fooditem
536 1406034973 2 10
는 기본적으로 나는에 내 오라클 SQL을 원하는 cashcurren 식품 항목 2와 현금 절약 10의 가장 높은 값을 타임 스탬프 1405987200에서 1405987200 + 86400으로 되돌립니다 (타임 스탬프는이 경우 7/22의 전체 날입니다). 타임 스탬프 최대 (값) 및 그룹화를 사용하여
는
그 결과를 보면 모든 단일 행의 타임 스탬프가 다릅니다. 각 타임 스탬프, fooditem 및 cashcurren 조합에 대한 최대 값을 선택했습니다 (그룹 별 절이 모두 3 개). 1 개가 아닌 5 개의 행이있는 이유는 해당 5 개의 행마다 다른 타임 스탬프가 있기 때문입니다. 타임 스탬프별로 그룹화했습니다. 대신 값을 내림차순으로 집계 및 정렬하거나 1을 제한하거나 인라인보기와 함께 조인을 사용하거나 하위 쿼리를 사용할 수 있습니다. –