出于某种原因,我遇到了很多麻烦,有人可以帮助我吗?
在MySQL中,我有一个名为Appointment的表,基本结构如下:
Table Appointment
Col | Type
--------------------------
id_appointment | int
fid_person | int
start_time | DATETIME
filled | int
我希望能够选择约会存在的所有日期,然后计算该日期未填写的约会数量,以便我可以输出如下内容:
可用的约会
- 10/24/2014: 3 Appointments
- 10/25/2014: 1 Appointment
- 10/30/2014: 5 Appointments
到目前为止,我有:
SELECT DISTINCT DATE(start_time) as date FROM Appointment
它返回了我所有独特日期的列表,但我似乎无法弄清楚剩下的日子,我已经尝试了一个子查询,但似乎无法做到正确,它已经有一段时间了,因为我和#39;完成了MySQL
任何帮助表示赞赏! 谢谢!
答案 0 :(得分:1)
如果我理解正确,这只是带有条件聚合的group by
查询:
select date(start_time), sum(filled = 0) as NumAvailable
from Appointment
group by date(start_time)
order by date(start_time);
答案 1 :(得分:0)
使用GROUP BY
,自动隐含DISTINCT
。
SELECT DATE(start_time) AS date, COUNT(*)
FROM Appointment
WHERE filled = 0
GROUP BY date
这不会显示没有未填写约会的日期。如果你想要,请使用Gordon Linoff的解决方案。