簡體   English   中英

max(count(*))錯誤:單組分組功能

[英]max(count(*)) Error: single-group group function

假設我有兩個表:

  1. 使用者
    在此處輸入圖片說明

  2. 在此處輸入圖片說明

我需要更改此查詢: 顯示購買軟件副本的前三名用戶
我的SQL是這樣的:

select u.name, u.age, u.sex, u.email, s.selluid, max(count(u.uid)) FROM users u, sells s where u.usrid = s.selluid

關於如何解決此問題的任何想法? 謝謝

SELECT x.*
FROM (
       SELECT u.name
            , u.age
            , u.sex
            , u.email
            , s.selluid
            , COUNT(*) as t 
       FROM users u JOIN sells s ON u.usrid = s.selluid
       GROUP BY u.name
       ORDER BY COUNT(*) DESC
     ) x 
 WHERE ROWNUM <= 3

嘗試這個

select u.usrid, u.name, count(s.sellid) 
from users u left join sells s on u.usrid=s.selluid 
group by u.usrid, u.name order by count(s.sellid) desc;

您可以使用帶有row_number()的聚合子查詢來解決此問題:

select u.*, s.numsales
from users u join
     (select s.selluid, count(*) as numsales,
             row_number() over (order by count(*) desc) as seqnum
      from sells s
      group by s.selluid
     ) s
     on u.userid = s.selluid
where seqnum <= 3;

這種方法的一個優點是,您只需使用u.*就可以輕松地從users那里獲得所有列。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM