我遇到的问题不是新问题,但我无法弄清楚如何得到我想要的答案。这可能是我想念的简单事情
使用mysql 5.5,我有2个表,'referrals'和'status'。我想计算已被取消的推荐,按appt_date分组:
SELECT SUM(1) AS count, appt_date FROM referrals
GROUP BY appt_date
JOIN status ON referrals.id=status.referral_id
WHERE status.status_name="cancelled"
这个工作正常,直到我有一个被取消两次的推荐。换句话说,状态表中具有匹配的referral_id的2行的给定ID的引用将被计算两次。
在此处进行联接操作时,如何仅对每个推荐记录计数一次?
编辑: 我真正的问题应该是:
SELECT SUM(quantity) AS count, appt_date FROM referrals
GROUP BY appt_date
JOIN status ON referrals.id=status.referral_id
WHERE status.status_name="cancelled"
因为每个推荐都可以有自己的数量。
答案 0 :(得分:2)
尝试将计数更改为计数(DISTINCT ID)
答案 1 :(得分:1)
所以伯爵只是一个标签,我应该看到:)
诱惑是做SUM(DISTINCT数量),但显然会删除欺骗“数量”,这不是你想要的。看起来您需要加入派生的选择表。看看这个......
http://www.sqlteam.com/article/how-to-use-group-by-with-distinct-aggregates-and-derived-tables