>

같은 범위를 갖고 싶습니다

SELECT * FROM generate_series(1,5);
generate_series
---------------
 1
 2
 3
 4
 5

그 것처럼 보이는 것으로 바꾸십시오

false
false
false
false
true

우리가 마지막 행에 있지 않으면 항상 거짓입니다. false 대신 0이고 true 대신 1이면 괜찮습니다.

내가 시도했다

SELECT floor(gs::float / max(gs))
  FROM generate_series(1, 5) AS gs
 GROUP BY gs;

하지만 확실하지 않은 이유로 1을 반환합니다.

  • 답변 # 1

    창 기능을 원할 것입니다 :

    SELECT
      gs,
      row_number() OVER (ORDER BY gs DESC) = 1
    FROM generate_series(1, 5) AS gs
    
    

  • 답변 # 2

    항상 숫자를 스스로 나누기 때문에 1을 반환합니다. 와이즈 비즈  당신이 max(gs) 에 의해 그룹화하기 때문에 당신이 생각하는 것을하지 않습니다 .

    당신은 단순히 gs 를 사용할 수 있습니다  원하는대로 얻을 수있는 창 함수 :

    last_value
    
    

    또는 최대 값을 원한다면 (마지막은 아니지만 반드시 동일 할 수도 있습니다) :

    SELECT
        (gs = last_value(gs) over()) AS result
    FROM
        generate_series(1,5) gs;
    
    

  • 답변 # 3

    아직 다른 창 기능 : SELECT (gs = max(gs) over()) AS result FROM generate_series(1,5) gs;  다음행을 참조하며 최종 레코드의 경우 NULL입니다.

    <시간>

    LEAD()
    
    

    SELECT (lead(gs) OVER www IS NULL) AS is_last FROM generate_series(1,5) gs(gs) WINDOW www AS (order by gs) ;

  • 이전 php - 600MP 이미지를 효율적으로 샘플링하는 방법
  • 다음 javascript - 선택한 텍스트에서 상황에 맞는 메뉴를 만드는 방법