由于某种原因,我在这方面遇到了很多麻烦,有人能帮我吗?
在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
它给我返回了一个所有独特日子的列表,但我似乎无法计算出其余的日子,我尝试了一个子查询,但似乎无法正确处理,我已经有一段时间没有做MySQL 了
感谢您的帮助!谢谢
如果我理解正确,这只是一个具有条件聚合的group by
查询:
select date(start_time), sum(filled = 0) as NumAvailable
from Appointment
group by date(start_time)
order by date(start_time);
使用GROUP BY
,这会自动暗示DISTINCT
。
SELECT DATE(start_time) AS date, COUNT(*)
FROM Appointment
WHERE filled = 0
GROUP BY date
这将不会显示没有未完成预约的天数。如果你想这样,就用Gordon Linoff的解决方案。