我有这两个表:课程(PK CourseId,Title)和参加者(PK AttendeeId,FK CourseId,方法)。
许多与会者可以通过6种方法中的任何一种来进行给定的课程。计算SQL Server 2005中的统计模式
如何在课程表(CourseId,Title)中为每个课程的所有参加者使用Method的统计模式打印出每个课程的一条记录?
我有这两个表:课程(PK CourseId,Title)和参加者(PK AttendeeId,FK CourseId,方法)。
许多与会者可以通过6种方法中的任何一种来进行给定的课程。计算SQL Server 2005中的统计模式
如何在课程表(CourseId,Title)中为每个课程的所有参加者使用Method的统计模式打印出每个课程的一条记录?
好的,根据我的理解你需要。
模式不一定是唯一的,因为 相同的最大频率可以 为不同的值来实现。
所以这里去
DECLARE @Course TABLE(
CourseID INT,
Title VARCHAR(50)
)
INSERT INTO @Course (CourseID,Title) SELECT 1, 'AA'
INSERT INTO @Course (CourseID,Title) SELECT 2, 'BB'
INSERT INTO @Course (CourseID,Title) SELECT 3, 'CC'
DECLARE @Attendee TABLE(
AttendeeID INT,
CourseID INT,
Method INT
)
INSERT INTO @Attendee (AttendeeID,CourseID,Method) SELECT 1, 1, 1
INSERT INTO @Attendee (AttendeeID,CourseID,Method) SELECT 2, 1, 1
INSERT INTO @Attendee (AttendeeID,CourseID,Method) SELECT 3, 1, 2
INSERT INTO @Attendee (AttendeeID,CourseID,Method) SELECT 4, 1, 1
INSERT INTO @Attendee (AttendeeID,CourseID,Method) SELECT 5, 1, 3
INSERT INTO @Attendee (AttendeeID,CourseID,Method) SELECT 6, 1, 3
INSERT INTO @Attendee (AttendeeID,CourseID,Method) SELECT 7, 1, 4
INSERT INTO @Attendee (AttendeeID,CourseID,Method) SELECT 8, 1, 4
INSERT INTO @Attendee (AttendeeID,CourseID,Method) SELECT 9, 1, 5
INSERT INTO @Attendee (AttendeeID,CourseID,Method) SELECT 10, 1, 6
INSERT INTO @Attendee (AttendeeID,CourseID,Method) SELECT 11, 1, 6
INSERT INTO @Attendee (AttendeeID,CourseID,Method) SELECT 12, 1, 6
INSERT INTO @Attendee (AttendeeID,CourseID,Method) SELECT 13, 2, 1
INSERT INTO @Attendee (AttendeeID,CourseID,Method) SELECT 14, 2, 3
INSERT INTO @Attendee (AttendeeID,CourseID,Method) SELECT 15, 2, 3
INSERT INTO @Attendee (AttendeeID,CourseID,Method) SELECT 16, 2, 3
INSERT INTO @Attendee (AttendeeID,CourseID,Method) SELECT 17, 2, 3
INSERT INTO @Attendee (AttendeeID,CourseID,Method) SELECT 18, 2, 6
DECLARE @Counts TABLE(
CourseID INT,
Title VARCHAR(50),
Method INT,
NumberMethodPerCourse INT
)
INSERT INTO @Counts (CourseID,Title,Method,NumberMethodPerCourse)
SELECT c.CourseID,
c.Title,
a.Method,
COUNT(a.Method) NumberMethodPerCourse
FROM @Course c INNER JOIN
@Attendee a ON c.CourseID = a.CourseID
GROUP BY c.CourseID,
c.Title,
a.Method
SELECT CourseMax.CourseID,
CourseMax.Title,
CourseMax.MaxNumber,
Counts.Method
FROM (
SELECT Counts.CourseID,
Counts.Title,
MAX(NumberMethodPerCourse) MaxNumber
FROM @Counts Counts
GROUP BY Counts.CourseID,
Counts.Title
) CourseMax INNER JOIN
@Counts Counts ON CourseMax.CourseID = Counts.CourseID
AND CourseMax.MaxNumber = Counts.NumberMethodPerCourse
完美!正是我需要的。只是为了满足我的需要而在附加的条款中加入了我很高兴。我试图在没有表的一个查询中执行它(不太好)。谢谢。 – DancesWithBamboo 2009-11-12 07:57:19
您可以在没有桌子的情况下做到这一点,但它会变得杂乱无章) – 2009-11-12 07:58:32
给例子中,你需要输出的数据。 – 2009-11-12 07:03:08