我有这个疑问:SQL查询,如何添加COUNT(*)列
select segment_name,owner,blocks*8192/1024/1024 as MB,tablespace_name
from dba_segments
where segment_name like 'AUD_2%' and owner like 'AUDITOR'
order by 1 desc;
SEGMENT_NAME OWNER MB TABLESPACE_NAME
---------------- ---------- ---------- ----------------
AUD_201304 AUDITOR 7 WSS
AUD_201303 AUDITOR 12 WSS
AUD_201302 AUDITOR 11 WSS
如何添加COUNT(*)列?
我想一个相关的子查询会做,但究竟是如何?
谢谢!
对不起在stackoverflow上找到代码,下次应该更好地搜索。感谢
对不起,这里的链接解决方案: How to count(*) of multiple tables, size and tablespace in one query
和这里的代码:
SELECT ut.table_name,
to_number(extractvalue(xmltype (dbms_xmlgen.getxml ('select count(*) c from ' ||ut.table_name)),'/ROWSET/ROW/C')) row_count,
db.blocks*8192/1024/1024 as MB,
db.tablespace_name
FROM user_tables ut
join dba_segments db on db.segment_name = ut.table_name
WHERE ut.table_name LIKE 'AUD_2%' and owner like 'AUDITOR'
ORDER BY ut.table_name DESC;
这里输出:
TABLE_NAME ROW_COUNT MB TABLES
------------------------------ ---------- ---------- ------
AUD_201304 21067 7 WSS
AUD_201303 43198 12 WSS
AUD_201302 39046 11 WSS
AUD_201301 44523 17 WSS
AUD_201212 50580 15 WSS
AUD_201211 49589 14 WSS
你正在使用什么RDBMS? –
@MahmoudGamal:由于查询中有'dba_segments',我猜测它是Oracle。 –
你要计算什么? –