mysql - 如何在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 的行数?
解决方案
count
忽略null
s,因此您可以执行 a count
overcase
表达式:
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
推荐阅读
- mongodb - 多面体查询中的地理并限制每个面的结果
- ios - 将新创建的视图链接到情节提要中的视图控制器类时遇到问题
- vue.js - 如何在 vuejs 中使用 axios 显示带有令牌的图像
- r - 在 R 中使用 doParallel 的 foreach 时,Windows Defender 的 CPU 使用率非常高
- class - Is it redundant to make final variables private in dart?
- laravel - 如何在 Laravel 中隐藏颜色/大小元素
- rxjs - Rxjs 6,GroupBy 单次发射
- c - c中的malloc链表
- javascript - ActiveXObject 在 asp.net 页面中以 Javascript 运行,但如果用户的域发生更改,为什么不呢?
- lilypond - 使 lilypond 使用恒定间距且没有条形