>source

int 유형의 열에서 특정 숫자가 몇 번 반복되는지 (총 개수)를 찾으려면 SQL 쿼리를 알고 싶습니다.

예 : Coumn_iD = 우편 번호

Postalcode
8696
2314
9645
3268
4288
2222

위의 경우 8 = 4 인 경우 2에 대한 쿼리는 7을 반환해야합니다. 그와 같이 도움을 주시면 감사하겠습니다.

sql

  • 답변 # 1

    particularSymbol 의 발생 횟수를 계산할 수 있습니다  테이블의 각 행에서 LENGTH(columnName) - LENGTH(REPLACE(columnName, particularNumber, "")) 로  그런 다음 전체 테이블에 대해 간단히 요약하십시오.

    SELECT SUM(LENGTH(columnName) - LENGTH(REPLACE(columnName, particularNumber, '')))
    FROM tableName
    
    

  • 답변 # 2

    먼저 각 행의 발생 횟수 (중첩 된 SELECT 문)를 세고 그 수를 합산하여 하나의 집계 수를 얻습니다.

    DECLARE @my_num INT
    SET @my_num = 2
    SELECT SUM(count_per_row)
    FROM
        (
        SELECT len(Postalcode) - len(replace(Postalcode,@my_num,''))  as count_per_row
        FROM table)
    
    

    일반화 할 필요가 없다면, SELECT 블록의 @my_num을 관심있는 숫자로 바꾸고 SELECT 문을 제거하십시오.

  • 답변 # 3

    사용중인 데이터베이스 시스템

    Postgres에서 우편 번호의 각 문자에 대해 하나의 행을 생성 한 다음 그룹별로 분류 할 수 있습니다 :

    with test_data (postalcode) as (
      values ('8696'),('2314'),('9645'),('3268'),('4288'),('2222')
    )
    select c, count(*)
    from test_data, unnest(string_to_array(postalcode, null)) as t(c)
    group by c
    order by c
    
    

  • 답변 # 4

    Ivo 솔루션이 가장 좋습니다. 그러나 우편 번호는 4 자리 숫자이므로 다음과 같이 쉽게 찾을 수 있습니다.

    select sum(case when postalcode like '2222' then 4
                    when postalcode like '%2%2%2%' then 3
                    when postalcode like '%2%2%' then 2
                    when postalcode like '%2%' then 1
                    else 0
               end) as num_2s
    from t;
    
    

관련 자료

  • 이전 spring boot - Kubernetes nginx가 사용자 지정 URL로 리디렉션
  • 다음 reactjs - redux 스토어에서 reduce 메소드를 사용하여 행을 삭제하는 방법