【发布时间】:2014-07-03 01:32:19
【问题描述】:
给定医生和患者互动日期列表 (VisitSchedule),我想选择所有看过超过 2 名独特患者的医生。我的问题是,为了隔离医生/患者,我需要按医生和患者分组。然后我如何限制结果,只返回Dr. Moody?因为他已经看过三 (3) 名独特的患者,而 Dr. Franks 只看过两 (2) 名独特的患者,尽管他总共访问的次数更多?
Physician Patient VisitDate
-------------------------------------
Dr. Moody Danny 5/1/2013
Dr. Moody Danny 5/3/2013
Dr. Moody Danny 5/7/2013
Dr. Moody Paul 4/11/2013
Dr. Moody Paul 5/10/2013
Dr. Moody James 5/1/2013
Dr. Franks Allison 4/18/2013
Dr. Franks Allison 4/24/2013
Dr. Franks Tammy 4/11/2013
Dr. Franks Tammy 4/14/2013
Dr. Franks Tammy 5/11/2013
Dr. Franks Tammy 5/12/2013
Dr. Franks Tammy 5/17/2013
SELECT Physician
FROM VisitSchedule
GROUP BY Physician, Patient
HAVING (COUNT(Physician) > 2)
我是否错误地使用了COUNT?
请注意,我的last question 与此相关,但我意识到我没有正确解释两列的分组。我试图简化这个问题,以免它过于冗长,但我最终过度简化它。
附:如果有人对“SQL Puzzle”书籍有任何建议可以帮助练习此类问题,那就太好了。
【问题讨论】:
-
SELECT Physician FROM VisitSchedule GROUP BY Physician HAVING COUNT(DISTINCT Patient) > 2 -
@Lamak 值得回答
-
@MichaelBerkowski 实际上是在尝试查找重复项,因为我确定之前有人问过这个问题
-
@Lamak 可能是这样,但解释为什么
Patient不应出现在GROUP中是有用且与众不同的 -
@MichaelBerkowski 是的,我知道,这就是为什么我实际上没有发布答案,但仍然想帮助操作
标签: sql sql-server