1

У меня есть две таблицы sql. Я хочу сравнить две таблицы. Сравнение двух таблиц уже сделано. Теперь я хочу узнать, сколько записей совпадает, а не совпадает в процентах. Можно ли написать запрос в sql, чтобы получить процент? а вот мои столы

  src_table

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

и tgt_table это

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

и теперь я хочу, чтобы сопоставленные данные и несогласованные в виде процентов это возможно?

1 ответ1

0

Я предполагаю, что вы хотите рассчитать процент по таблице tgt_data . Если это не так, просто поменяйте имена таблиц ниже.

Запрос зависит от возможностей вашего продукта SQL. Если он не может обрабатывать сложные выражения с подзапросами, вам нужно будет разбить выражение на несколько операторов.

Выражение, которое вы хотите вычислить:

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

Если вам нужно сформулировать его как один оператор SELECT, это альтернативная формулировка:

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

Если ваш продукт рассчитывает это в целочисленной арифметике, и вы хотите получить результат в десятичном виде, то замените 100 на 100.0 выше.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .