postgresql 查询未返回预期结果

标签 postgresql

我已经形成了这个 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”而不是预期的计算百分比值?

最佳答案

这两个 COUNT() 都返回一个整数,整数除法不返回小数。将其中一个转换为 float 将强制进行 float 除法,返回您所期望的结果。

例如:

count(distinct party_wid)::float Reach

关于postgresql 查询未返回预期结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53296322/

相关文章:

ruby - Heroku 内部服务器错误 - ruby​​/Sinatra/Postgresql

postgresql - sailspostgresql 使用 sails lift 命令时出错?

sql - Rails 5 - 如何使用 postgresql 查询?

php - 多次在数据库中搜索表单元素

postgresql - Postgres 12 不区分大小写的比较

postgresql - 在 plpgsql 中使用 CTE

postgresql 多个子查询

database - 在一个查询中更新和插入(不是更新插入)

postgresql - PropelBundle 数据库 :create for postgres

sql - 使用 sql/postgresql 查询显示带有列名的条件输出