1

私は新しい問題を抱えていますが、私が望む答えを得る方法がわかりません。それはおそらく私が見逃している単純なものです

mysql 5.5 を使用すると、'referrals' と 'status' の 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"

これは、紹介が 2 回キャンセルされるまでは問題なく機能します。言い換えれば、ステータステーブルに一致する referral_id を持つ 2 つの行がある特定の ID を持つ紹介は、2 回カウントされます。

ここで結合操作を行うときに、各紹介レコードを 1 回だけカウントする方法は?

編集:私の本当の質問はこれだったはずです:

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

だから、カウントは単なるラベルでした、私はそれを見るべきでした:)

誘惑はSUM(DISTINCT数量)を実行することですが、明らかに重複した「数量」を削除するだけであり、これはあなたが望むものではありません。派生したselectテーブルに参加する必要があるようです。これを見てください...

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

于 2012-11-17T21:30:58.660 に答える