我需要编写一份SQL语句,列出每位参加医院的顾客的详细信息以及他们的访问次数。他们的访问记录在Registrations
表中。该列表将按访问次数排序。
以下是我的表格以及一些示例数据...
赞助人
PatronID | FirstName | LastName | eMail
---------|-----------|----------|------
1 | Joe | Bloggs | a@a
2 | Trung | Nguyen | b@b
注册记忆
RegistrationID | PatronID
---------------|---------
1 | 1
2 | 2
3 | 2
4 | 1
5 | 2
以下是我希望输出显示的示例...
PatronID | FirstName | LastName | eMail | visitsCount
---------|-----------|----------|-------|------------
2 | Trung | Nguyen | b@b | 3
1 | Joe | Bloggs | a@a | 2
到目前为止,我的所有尝试都没有多大意义,我所做的研究也很困惑,因为它很有帮助。有人可以帮助我,或者至少指出我正确的方向。
答案 0 :(得分:-1)
如果他们多次访问,这将给出顾客列表及其访问次数:
select patrons.patronid, patrons.firstname. patrons.lastname, patrons. email, visits
from
(
select patronid, count(*) visits
from registrations
group by patronid
having count(*) > 1
) dups
join patrons on dups.patronid = patrons.patronid
答案 1 :(得分:-1)
请尝试以下方法......
SELECT Patrons.PatronID,
FirstName,
LastName,
eMail,
visitsCount
FROM Patrons
INNER JOIN ( SELECT PatronID,
COUNT( PatronID ) AS visitsCount
FROM Registrations
GROUP BY PatronID
) AS visitsCountFinder ON Patrons.PatronID = visitsCountFinder.PatronID
WHERE visitsCount > 1
ORDER BY visitsCount;
首先从PatronID
中提取Registrations
值列表,并计算PatronID
Registrations
在visitsCount
内的出现频率(名称为{ {1}})。然后JOIN
将此列表Patrons
发送到visitsCount
表,以便每个Patron的Patrons
值与SELECT
中的相应记录放在同一记录中。
然后我们WHERE
所需的字段1
计数大于interface IValidatable {
checkValidation: () => boolean;
}
function validated<T>(Class: {new():T}): {new():T & IValidatable} {
Class.prototype.checkValidation = () => true;
return Class as {new():T & IValidatable};
}
,并按照计数值对结果记录集进行排序。
如果您有任何问题或意见,请随时发表评论。