1

我有一个不可能是新的问题,但我不知道如何得到我想要的答案。我想念的可能很简单

使用 mysql 5.5,我有 2 个表,“推荐”和“状态”。我想计算已取消的推荐,按 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"

这工作正常,直到我有一个被取消两次的推荐。换句话说,具有给定 id 的推荐在状态表中有 2 行与匹配的推荐 ID 将被计算两次。

在这里进行join操作时,如何将每条推荐记录只统计一次?

编辑:我真正的问题应该是这样的:

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"

因为每个推荐都可以有自己的数量。

4

2 回答 2

3

尝试将 count 更改为 count(DISTINCT id)

于 2012-11-17T19:36:59.080 回答
1

所以 count 只是一个标签,我应该看到的 :)

诱惑是做 SUM(DISTINCT quantity) 但显然只会删除重复的“数量”,这不是你想要的。看起来您需要加入派生选择表。看看这个...

http://www.sqlteam.com/article/how-to-use-group-by-with-distinct-aggregates-and-derived-tables

于 2012-11-17T21:30:58.660 回答