我管理一个注册系统,人们可以在其中注册课程,并且我有以下查询来计算一些统计数据:
SELECT p.id_country AS id, c.name, COUNT(p.id_country) AS total
FROM participants p
LEFT JOIN countries c ON p.id_country = c.id
WHERE p.id_status NOT IN (3,4,13,14)
GROUP BY p.id_country
ORDER BY total DESC
这个查询工作正常,它准确地显示了每个国家的参与者数量。现在我们的系统可以注册多个课程,并且每次注册都会在参与者表中插入一个新行。我知道,这不是理想的情况,但不幸的是,现在改变这一点为时已晚。如果参与者注册第二(或第三、第四等)课程,则他使用相同的电子邮件地址。因此,在参与者表中,同一个电子邮件地址可以多次出现。
我想做的是更改此查询,以便考虑到每个电子邮件地址只能使用一次。该字段只是 p.email,我认为我应该使用 DISTINCT 做一些事情来实现这一点。但无论我尝试什么,它要么给我非常奇怪的结果,要么给我一个错误。
是否有可能做到这一点 ?