테이블의 각 칼럼에 대한 문자수 취득 0 0 784

by 김선우 [SQL Query] Postgresql [2018.09.21 16:34:17]


안녕하세요.

제목과 같이 여러 테이블의 칼럼에 대한 문자수를 취득하고자 합니다.

DB는 Postgresql이구요

테이블의 칼럼정보는 information_schema.columns에서 다음과 같이 취득하고 있습니다.

SELECT

    table_schema

   ,table_name

   ,column_name

   ,data_type

FROM

    information_schema.columns

WHERE

    schema_name = 'myschema';

 

그러면 결과는 다음과 같은 이미지입니다. 물론 예시입니다. 더 많은 테이블과 칼럼이 있습니다.

 table_schema  |   table_name   |   column_name |    data_type
---------------+----------------+---------------+---------------------
 myschema      | tbl0013_aaaaaa | col1          | character varying
 myschema      | tbl0013_aaaaaa | col2          | character varying
 myschema      | tbl0013_aaaaaa | col3          | numeric
 myschema      | tbl0013_bbbbbb | col1          | character varying
 myschema      | tbl0013_bbbbbb | col2          | character varying
 myschema      | tbl0013_bbbbbb | col3          | character varying
 myschema      | tbl0013_bbbbbb | col4          | numeric

 

상기 결과를 가지고 테이블별로 각 칼럼의 data_type이 character의 경우에는 문자수의 합(sum(length(column)))을 numeric인 경우에는 sum과avg를 구하려고 합니다.

결과 이미지는 다음과 같습니다.

table_name      |    column_name |    data_type         |      char_sum   |  num_sum   |    num_avg
----------------+----------------+----------------------+-----------------+------------+-----------------
tbl0013_aaaaaa  |      col1      |  character varying   |      3245234    |            |                 
tbl0013_aaaaaa  |      col2      |  character varying   |        23242    |            |                 
tbl0013_aaaaaa  |      col3      |  numeric                 |                 |   9834     |     232         
tbl0013_bbbbbb  |      col1      |  character varying   |       112314    |            |                 
tbl0013_bbbbbb  |      col2      |  character varying   |         5436    |            |                 
tbl0013_bbbbbb  |      col3      |  character varying   |      8753912    |            |                 
tbl0013_bbbbbb  |      col4      |  numeric                |                 |   12344    |      86         

 

동적으로 만들어야 할거 같은데...

잘 모르겠네요.

SQL만으로는 불가능할까요? 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입