안녕하세요.
제목과 같이 여러 테이블의 칼럼에 대한 문자수를 취득하고자 합니다.
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만으로는 불가능할까요?