0

SELECT我在 postgresql 上有一个大表,如果可能的话,我想获取多个结果集作为查询的输出?

我的表如下所示:

select * from dns_table

id  |    dns_name    | ip_source  |    mac_source     |         query_time         
-----+----------------+------------+-------------------+----------------------------
   1 | google.com     | /10.0.0.1  | 00-00-00-00-00-01 | 2014-05-12 10:03:03.503938
   2 | facebook.com   | /10.0.0.1  | 00-00-00-00-00-01 | 2014-05-12 10:03:04.567417
   3 | google.com     | /10.0.0.5  | 00-00-00-00-00-05 | 2014-05-12 10:03:05.372453
   4 | youtube.com    | /10.0.0.1  | 00-00-00-00-00-01 | 2014-05-12 10:03:05.636633
   5 | facebook.com   | /10.0.0.5  | 00-00-00-00-00-05 | 2014-05-12 10:03:06.420067
   6 | yahoo.com      | /10.0.0.1  | 00-00-00-00-00-01 | 2014-05-12 10:03:06.685871
   7 | google.com     | /10.0.0.6  | 00-00-00-00-00-06 | 2014-05-12 10:03:07.198905
   8 | youtube.com    | /10.0.0.5  | 00-00-00-00-00-05 | 2014-05-12 10:03:07.524503
   9 | wikipedia.org  | /10.0.0.1  | 00-00-00-00-00-01 | 2014-05-12 10:03:07.747143
  10 | facebook.com   | /10.0.0.6  | 00-00-00-00-00-06 | 2014-05-12 10:03:08.287584
  11 | yahoo.com      | /10.0.0.5  | 00-00-00-00-00-05 | 2014-05-12 10:03:08.572827
  ...
  ...

我想要的是:

SELECT 
    count(dns_name) as hits, 
    dns_name, 
    to_char(query_time - interval '1 month','YYYY,MM,DD,HH24,MI') as qt 
FROM dns_table 
where dns_name like '**google.com**' 
group by dns_name, qt 
order by qt;

hits |  dns_name  |        qt        
------+------------+------------------
  61 | google.com | 2014,04,12,10,03
  40 | google.com | 2014,04,12,15,05
  45 | google.com | 2014,04,13,09,34

所以我想知道是否可以用参数替换google.com以获得每个dns_name( google.com, facebook.com, yahoo.com, ...) 的结果集。

不要犹豫任何问题!

4

1 回答 1

0

您无法获得多个结果集。您将不得不从您的应用程序中询问每个单独的系列。首先获取所有名称:

select distinct dns_name
from dns_table
order by dns_name;

然后要求传递名称作为参数的系列:

select 
    count(dns_name) as hits, 
    dns_name, 
    date_trunc('minute', query_time) as qt 
from dns_table
where
    query_time > now() - interval '1 month'
    and
    dns_name = :dns_name
group by qt 
order by qt;
于 2014-05-13T13:25:46.823 回答