简化多个组子句

时间:2014-06-26 08:23:14

标签: sql select count group-by

好的,我有以下问题:

SELECT p.[PAGE_ID] ,
       count(*) AS COUNT
FROM
  ( SELECT p.[PAGE_ID] ,
           o.country_id
   FROM [PAGES] p
   JOIN PAGE_ITEM_POSITION pip ON p.PAGE_ID = pip.PAGE_ID
   JOIN items i ON pip.item_id=i.item_id
   GROUP BY tp.PAGE_ID,
            i.country_id) AS p
GROUP BY p.page_id

因此,页面包含项目,项目在页面上的特定位置存在国家和项目(但这与问题无关)。这里没什么好复杂的。

我想知道的是,每个页面上有多少个不同的国家/地区,这正是上面的查询所做的。但是,我不禁想到这有点过于复杂。

内部查询组,以便我直接列出特定国家/地区的页面,然后外部部分再次由ID生成,以便给我计数。

这个查询可以简化吗?

1 个答案:

答案 0 :(得分:1)

试试这个:

SELECT p.[PAGE_ID], COUNT(DISTINCT i.country_id)
FROM [PAGES] p
INNER JOIN PAGE_ITEM_POSITION pip ON p.PAGE_ID = pip.PAGE_ID
INNER JOIN items i ON pip.item_id=i.item_id
GROUP BY p.PAGE_ID