首页 > 解决方案 > 如何在mysql中的where中使用COUNT()?

问题描述

我有桌子pages (id, ...)page_visits (id, page_id, is_subscribed)

page_visits表现在每个 page_id 大约有 200 万行。

我需要创建一个查询,该查询将获取每页的访问次数和订阅数。我的查询现在只获取访问次数:

SELECT page_id, COUNT(page_id) AS visits
FROM `page_visits`
WHERE `page_id` in (1, 2)
GROUP BY `page_id`

但是如何page_subscriptions在结果中添加一个列,该列将包含is_subscriped = 1每个 page_id 的行数?

标签: mysqlsqlgroup-bycountpivot

解决方案


count忽略nulls,因此您可以执行 a countovercase表达式:

SELECT   page_id, 
         COUNT(page_id) AS visits 
         COUNT(CASE is_subscribed WHEN 1 THEN 1 END) AS subscried_visits
FROM     page_visits
WHERE    page_id IN (1, 2) 
GROUP BY page_id

推荐阅读