Glam Prestige Journal

Bright entertainment trends with youth appeal.

i have two sql tables i want to compare two tables ..comparing two tables is done now what i want is how many records are matched and not matched in the form of percentage .is it possible to write a query in sql to get percentage? and here is my tables

 src_table
----------------------------------------------------------------
src_table
----------------------------------------------------------------
1
2
3
a
b
c
a@
b@
c@
-----------------------------------------------------------------

and tgt_table is

-----------------------------------------------------------------
tgt_data
-----------------------------------------------------------------
1
4
5
a
e
f
a@
e@
f@
--------------------------------------------------------------------

and now i want matched data and unmatched in the form of percentage is it possible?

1 Answer

I assume you wish to calculate the percentage over the table tgt_data. If this is not the case, just exchange the table names below.

The query depends on the capabilities of your SQL product. If it cannot handle complex expressions with sub-queries, you will need to break the expression into multiple statements.

The expression you would like to calculate is:

(select count(*) * 100 from tgt_data t where exists (select * from src_table where src_col = t.tgt_col))
/
(select count(*) from tgt_data)

If you need to formulate it as one SELECT statement, this is an alternate formulation:

select
(select count(*) * 100 from tgt_data t where exists (select * from src_table where src_col = t.tgt_col))
/ count(*)
from tgt_data

If your product calculates this in integer arithmetic, and you would like the result in decimal, then replace 100 by 100.0 above.