Как посчитать количество строк с уникальными значениями в каждом столбце по следующему запросу в SQL - PullRequest
1 голос
/ 16 января 2020
SELECT COLUMN_NAME
FROM ALL_TAB_COLUMNS
WHERE TABLE_NAME = 'MYTABLE' AND OWNER = 'MYSCHEMA'

Итак, сейчас отображаются все столбцы, присутствующие в моей таблице, но я также хочу отобразить количество строк в каждом из этих столбцов.

Как мне конкретно go сделать это?

Ответы [ 2 ]

1 голос
/ 17 января 2020

Для составления запроса, показанного ниже:

select
  count(distinct col1),
  count(distinct col2),
  count(distinct col3),
  ...
from my_table
, вам нужно будет использовать некоторые динамические значения c SQL.
1 голос
/ 17 января 2020

Количество строк относится к таблицам , а не столбцам . Таким образом, вы

select count(*) from your_table;

получите это значение.

Динамически , PL / SQL может сделать это следующим образом:

SQL> set serveroutput on
SQL> declare
  2    l_cnt number;
  3  begin
  4    for cur_r in (select table_name, column_name
  5                  from user_tab_columns
  6                  where table_name in ('EMP', 'DEPT')
  7                 )
  8    loop
  9      execute immediate 'select count(distinct ' || cur_r.column_name || ')' ||
 10                        ' from ' ||cur_r.table_name into l_cnt;
 11      dbms_output.put_line(cur_r.table_name ||'.'|| cur_r.column_name ||': ' || l_cnt);
 12    end loop;
 13  end;
 14  /
DEPT.DEPTNO: 4
DEPT.DNAME: 4
DEPT.LOC: 4
EMP.EMPNO: 14
EMP.ENAME: 14
EMP.JOB: 5
EMP.MGR: 6
EMP.HIREDATE: 13
EMP.SAL: 12
EMP.COMM: 4
EMP.DEPTNO: 3

PL/SQL procedure successfully completed.

SQL>
...