SELECT S.CUSTID, C.NAME, COUNT(S.CUSTID) as "Customer with most Purchases"
FROM CUSTOMER C, SALESTRANSACTION S
WHERE C.CUSTID = S.CUSTID
GROUP BY (S.CUSTID, C.NAME, C.CUSTID)
ORDER BY COUNT(S.CUSTID) DESC;
這實際上告訴我們哪個人的購買次數最多。但是如何只列印頂行而不列印下面的所有其他行?
uj5u.com熱心網友回復:
您想獲取中間結果中排名最高的行。如果您想保持您的查詢原樣并且只添加適當的子句,請為此使用FETCH修改后的ORDER BY子句RANK。
SELECT
c.custid,
c.name,
COUNT(s.custid) AS transaction_count
FROM customer c
LEFT OUTER JOIN salestransaction s ON s.custid = c.custid
GROUP BY c.custid, c.name
ORDER BY RANK() OVER (ORDER BY COUNT(s.custid) DESC)
FETCH FIRST ROW WITH TIES;
我已將您的逗號分隔連接(一種三十年前使用的語法)更改為適當的顯式連接。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/316290.html
