mysql - 如何在 mysql 中使用 COUNT() 和 where ?

标签 mysql sql group-by count pivot

我有表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 列,该列将包含每个 page_id is_subscriped = 1 的行数?

最佳答案

count 忽略 null,因此您可以对 case 表达式执行 count:

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

关于mysql - 如何在 mysql 中使用 COUNT() 和 where ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63981837/

相关文章:

MySQL 在字符串的开头/结尾处搜索和替换

mysql:子查询返回多于1行

php - 如何将多行值显示为单行

php - 插入无值

c# - 从表中删除*

PHP MySql 双引号比单引号

php - 使用文本区域作为用户输入的 SQL 查询

使用 group by 的 MySql 变量顺序计算无法正常工作

sql - 为什么 Postgres Group By NULL 选择不计数?

sql - 如何在 PostgreSQL 9 中用 GROUP BY 替换 DISTINCT ON?