我有以下查询,它给出了过去两周内患者请求的计数。
SELECT DISTINCT table_posts.post_author,
COUNT(CASE WHEN (table_posts.post_date BETWEEN '2017-10-15' AND '2017-11-01') THEN table_posts.post_author ELSE 0 END) AS leaderboard1,
COUNT(CASE WHEN (table_posts.post_date BETWEEN '2017-10-01' AND '2017-10-15') THEN table_posts.post_author ELSE 0 END) AS leaderboard2,
table_users.display_name, f.meta_value
FROM table_posts
INNER JOIN table_users
ON table_posts.post_author = table_users.ID
INNER JOIN table_frm_items
ON table_posts.post_author=table_frm_items.user_id AND table_frm_items.form_id='11'
INNER JOIN table_frm_item_metas AS f
ON table_frm_items.id=f.item_id AND f.field_id='134'
WHERE table_posts.post_type IN ('patient_requests') AND (table_posts.post_date BETWEEN '2017-10-01' AND '2017-11-01')
GROUP BY table_posts.post_author
ORDER BY leaderboard1 DESC
我想修改此查询以添加另一个列,比较前两周的结果。因此,当前专栏给出了10月15日至11月1日之间收到的请求的计数,我要添加的列是将其与10月1日至10月15日的前一个时间轴进行比较。我已经找到了一个简单的解决方案找到一个。我觉得这应该不复杂,但我尝试了多种解决方案,包括以下内容:
sudo chown -R your_login_name /path/to/folder
但是案件完全被忽略了,我被赋予了WHERE子句中的任何内容。
答案 0 :(得分:0)
count
计算得到的非null
值的数量。由于0
不是null
,因此它也会被计算在内。您可以将else
子句更改为显式返回null
,或者只省略这些子句,因为case
默认情况下会返回null
以查找任何子句中不匹配的值:
COUNT(CASE WHEN wp_posts.post_date BETWEEN '2017-10-15' AND '2017-11-01'
THEN wp_posts.post_author
END) AS leaderboard1,
COUNT(CASE WHEN wp_posts.post_date BETWEEN '2017-10-01' AND '2017-10-15')
THEN wp_posts.post_author
END) AS leaderboard2,