MySQL选择Distinct并计算每个不同条件匹配条件的数量

时间:2014-08-28 20:59:06

标签: mysql count match distinct

出于某种原因,我遇到了很多麻烦,有人可以帮助我吗?

在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

任何帮助表示赞赏! 谢谢!

2 个答案:

答案 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的解决方案。