2014-01-27 4 views
1

여러분이 SQL에서 사용자 정의 열과 고정 열 이름을 정렬하는 방법을 보여줄 수 있습니까? 나는 가장 높은 거래와 outletid를 표시해야하는데, 대신 가장 높은 거래를 얻지 만 oulet id는 그룹화하지 않습니다. SQL에서 2 개의 다른 열을 정렬하는 방법

나를 용서, 영어

여기

에서 메신저 아주 나쁜 문제

여기
outlet id | revenue code | total transaction | total amount 

6837  |  014 |  326  | 39158.94 
6821  |  408 |  291  | 48786.50 
6814  |  014 |  285  | 74159.76 
6837  |  452 |  282  | 8846.80 

및 것은 내가 그것을 이렇게 할 필요가 내 SQL

SELECT 
       outletid, 
       revcode, 
       count(receiptnumbe) as Transactions, 
       sum(amount) as total 
      FROM 
       user_payment 
      WHERE 
       date = (SELECT MAX(date) FROM user_payment GROUP BY date desc LIMIT 0, 1) 
      GROUP BY 
       outletid, revcode 
      ORDER BY Transactions desc 

입니다. 출구 ID 및 가장 높은 거래별로 정렬하십시오.

outlet id | revenue code | total transaction | total amount 

    6837  |  014 |  326  | 39158.94 
    6837  |  452 |  282  | 8846.80 
    6821  |  408 |  291  | 48786.50 
    6814  |  014 |  285  | 74159.76 
+3

다음과 같이 시도하십시오 : 'order by outletid desc, Transactions desc' – Melon

+0

@ 멜론, 효과가 없습니다 ... –

+0

"날짜 별 최대 날짜 수"어? – Strawberry

답변

1

이게 원하는가요?

ORDER BY OutletId, Transactions desc 

편집 :

만약 내가 제대로 이해하고, 당신이 가장 전체 트랜잭션을 가지고있는 출구으로 분류합니다. 그런 다음 해당 그룹 내의 트랜잭션을 기준으로합니다. 그렇게하려면, 당신은 결과를 outlet 수준에서 다시 요약하고 다시 가입해야합니다

select outor.* 
from (SELECT up.outletid, up.revcode, count(up.receiptnumbe) as Transactions, 
      sum(up.amount) as total 
     FROM user_payment up 
     WHERE date = (SELECT MAX(date) FROM user_payment) 
     GROUP BY outletid, revcode 
    ) outor join 
    (SELECT up.outletid, count(up.receiptnumbe) as Transactions, 
      sum(up.amount) as total 
     FROM user_payment up 
     WHERE date = (SELECT MAX(date) FROM user_payment) 
     GROUP BY outletid 
    ) o 
    on outor.outletid = o.outletid 
order by o.Transactions desc, outor.outletid, outor.Transactions desc; 
+0

가장 높은 그룹을 표시하지 않습니다. 내가 필요로하는 것은 질문의 마지막 부분과 같다. –

+0

그래, 우리는 아직 그 그룹에 날짜 쓰레기를 쓰고있다. – Strawberry

+0

@Strawberry. . . 나는 그것을 제거했다. 그러나, 원래의 공식은'group by '을 MySQL에서 사용하기 때문에 작동했습니다 (기능이 더 이상 사용되지 않습니다). –

0

1) 먼저 할 일은 당신이 필드 당신이 원하는 방식으로 정렬되어 있는지 확인합니다. 숫자순으로 또는 알파벳순으로 정렬 하시겠습니까? See Sorting Lexical and Numeric 숫자는 숫자 여야하지만 outletid를 확인해야합니다. 테이블에 액세스 할 수있는 경우 필드를 숫자 형식으로 정렬 할 수있는 숫자 형식이나 알파벳순으로 정렬 할 수있는 문자열로 변경할 수 있습니다. 캐스트 또는 변환을 사용해야 할 수도 있습니다. See Oracle Cast Documentation.

2) 전체 테이블을 콘센트 ID 및 트랜잭션 양으로 정렬하려면 group by 절을 제거하는 것이 좋습니다.

3) 세 번째 사항은 예약어 인 테이블에 단어를 예약 한 열 이름의 이름을 바꾸는 것입니다. 파란색으로 강조 표시된 거래가 나타났습니다.

이러한 사항을 확인하면 멜론의 의견이 적용됩니다.

좋은 질문입니다. 후속 조치를 취할 수 있도록 자유롭게 의견을 말하십시오.

관련 문제