0

次の表があります。

memberid  
2
2
3
4
3

...そして、次の結果が必要です。

memberid    count
2           2
3           1    ---Edit by gbn: do you mean 2?
4           1

私は使用しようとしていました:

  SELECT MemberID, 
         COUNT(MemberID) 
    FROM YourTable 
GROUP BY MemberID

...しかし、最大カウントを持つレコードを見つけたいと思います。いいえ:

memberid   count
2          2
4

10 に答える 10

12
SELECT memberid, COUNT(*) FROM TheTable GROUP BY memberid

ただし、「memberid = 3」が2回あるため、目的の出力では機能しません。

編集:質問への更新が遅れた後...

SELECT TOP 1 WITH TIES    --WITH TIES will pick up "joint top". 
    memberid, COUNT(*)
FROM
    TheTable 
GROUP BY 
    memberid
ORDER BY
    COUNT(*) DESC
于 2009-10-10T12:34:40.937 に答える
1
SELECT MemberID, COUNT(MemberID) FROM YourTable GROUP BY MemberID
于 2009-10-10T12:33:18.570 に答える
1

最大値が同点 (またはそれ以上) の場合はどうなりますか? 1 つまたはすべてを表示しますか?

これは私がこれを行う方法です

SELECT memberid, COUNT(1)
FROM members
GROUP BY memberid
HAVING COUNT(1) = (
            SELECT MAX(result.mem_count)
            FROM (  
                SELECT memberid, COUNT(1) as mem_count
                FROM members
                GROUP BY memberid
            ) as result
          )

でも、もっと効率的なアプローチが見たいです。

于 2009-10-10T14:34:59.063 に答える
0

次のようにします。

SELECT memberid, COUNT(memberid) AS [count] FROM [Table] GROUP BY memberid
于 2009-10-10T12:42:00.133 に答える
0

これは、サブセレクトを必要とせずにうまくいくはずです:

select top 1 memberid, COUNT(*) as counted 
from members
group by memberid
order by counted desc
于 2009-10-10T16:56:52.757 に答える
0

非常に簡単に実行できます。

SELECT TOP 1 MemberId, COUNT(*) FROM YourTable GROUP BY MemberId ORDER By 2 DESC
于 2009-10-10T17:23:10.627 に答える
0

このクエリはどうですか:

SELECT TOP 1 MemberID, 
       COUNT(MemberID) 
FROM YourTable 
GROUP BY MemberID
ORDER by count(MemberID) desc
于 2009-10-10T20:38:30.063 に答える
0

元の投稿者は 2 つの結果セットを要求したと思います。

これを (SQL Server で) 取得する唯一の方法は、元のレコードを一時テーブルにダンプし、その上で SELECT と MAX を実行することです。必要なコードが少ない回答を歓迎します!

-- Select records into a temp table
SELECT
    Table1.MemberId
    ,CNT = COUNT(*)
INTO #Temp
FROM YourTable AS Table1
GROUP BY Table1.MemberId
ORDER BY Table1.MemberId

-- Get original records
SELECT * FROM #Temp

-- Get max. count record(s) 
SELECT 
    Table1.MemberId
    ,Table1.CNT
FROM #Temp AS Table1
INNER JOIN (
    SELECT CNT = MAX(CNT)
    FROM #Temp
) AS Table2 ON Table2.CNT = Table1.CNT

-- Cleanup 
DROP TABLE #Temp
于 2009-10-10T17:25:06.927 に答える
-1

サブセレクトを使用する必要があります:

SELECT MemberID, MAX(Count) FROM
    (SELECT MemberID, COUNT(MemberID) Count FROM YourTable GROUP BY MemberID)
GROUP BY MemberID

2 番目の group by は、カウントと MemberID の両方を返すために必要です。

于 2009-10-10T16:34:09.603 に答える
-1

SELECT count(column_name) FROM your_table;

于 2009-10-10T12:36:40.643 に答える