Я сформировал этот запрос postgresql для получения некоторого результата:
Select
TblDailyRch.viewing_date1,
TblDailyRch.channel_name1,
((TblDailyRch.Reach/tblUniqViewers4AllChannels.ReachAll) * 100) "Reach %"
From
(Select
viewing_date viewing_date1,
channel_name channel_name1,
count(distinct party_wid) Reach
From
tv_viewing_sessions_daily_aggregate
Where
viewing_date between '20171101' and '20171102'
Group By
viewing_date1,
channel_name
Order BY
viewing_date1,
channel_name1) TblDailyRch,
(Select
viewing_date viewing_date2,
count(distinct party_wid) ReachAll
From
tv_viewing_sessions_daily_aggregate
Where
viewing_date between '20171101' and '20171102'
Group By
viewing_date2 Order BY viewing_date2) tblUniqViewers4AllChannels
Where
tblUniqViewers4AllChannels.viewing_date2 = TblDailyRch.viewing_date1;
Ниже приведен пример результата при выполнении только первого запроса:
viewing_date | channel_name | reach
--------------+--------------------------+--------
20171101 | 3E | 25133
20171101 | 4FM | 253
20171101 | 4MUSIC | 1243
20171101 | 98FM | 236
20171101 | ALIBI | 3468
Ниже приведен пример результата при выполнении второго запроса:
viewing_date2 | reachall
---------------+----------
20171101 | 115623
20171102 | 113898
Но когда я запускаю полный запрос, я получаю следующий результат:
viewing_date | channel_name | Reach %
--------------+--------------------------+----------
20171101 | 3E | 0
20171101 | 4FM | 0
20171101 | 4MUSIC | 0
20171101 | 98FM | 0
Логически запрос кажется правильным, но я не могу понять, почему при выполнении полного запроса третьи столбцы «Reach%» дают результат в виде «0» вместо ожидаемого вычисленного значения в процентах?