對於每一位總借閱次數超過10(含)次的讀者,列出其讀者編號和2009年的借閱總次數



Book(callNo. isbn, title, subject)
//分類號,ISBN,書名,主題
Patron(pId, name, startDate)
//讀者編號,讀者姓名,開始日期
BorrowRecord(pId, callNo. borrowDate, returnData)
//讀者編號,分類號,借閱日期,歸還日期




對於每一位總借閱次數超過10()次的讀者,列出其讀者編號和2009年的借閱總次數

解答:


SELECT C.pId,IFNULL(Q2009,0) 2009borrow
FROM
(
     SELECT B.pId,COUNT(*) Q2009        /*借閱超過10()次 AND 2009年,的借閱的讀者人數*/
     FROM
                (SELECT * ,COUNT(*)
                 FROM BorrowRecord
                GROUP BY pId
                HAVING COUNT(*)>=10
               )AS A JOIN BorrowRecord B
                ON A.pId=B.pId
      WHERE B.borrowDate LIKE '%2009%'
      GROUP BY B.pId
) AS P 

     RIGHT JOIN
     (SELECT * ,COUNT(*) total          /*符合借閱次數超過10()次的讀者人數*/
     FROM BorrowRecord
     GROUP BY pId
     HAVING COUNT(*)>=10
     )AS C
     ON P.pId=C.pId


可能產生的表格:

留言

這個網誌中的熱門文章

數位信封 Digital Envelope

SSL的運作原理