0

以下のような表から、削除された分類の数と削除された分類の数が最も多いユーザーを選択するにはどうすればよいですか? こちら: 6 = 削除されました。私はmySqlを使用しています。

"userid"    "classStatus"
"1"         "6"
"1"         "6"
"2"         "0"
"2"         "6"
"3"         "0"
"3"         "0"

したがって、この場合、出力は次のようになります。

"userid"    "numberofClassifieds"
"1"         "2"
"2"         "1"

私は基本的な sql ステートメントで問題ありませんが、これを行う方法を見つけることができません。

select max(count(classStatus)) as t, userid as u from testtops where classStatus=6;
4

5 に答える 5

1

これにより、少なくとも 1 つのクラスフィールドが削除されているすべてのユーザーが選択され、すべてのクラスフィールドの数と削除されたすべてのクラスフィールドの数が表示されます。

SELECT
  userid,
  count(*) as numberofClassifieds,
  sum(classStatus=6) as numberofDeletedClassfields
FROM
  your_table
GROUP BY userid
HAVING numberofDeletedClassfields>0
ORDER BY numberofDeletedClassfields DESC

編集:これは結合を使用する代替手段です。他のクエリほどエレガントには見えませんが、確かに高速です:

SELECT dc.userid, c.numberofClassfields, dc.numberofDeletedClassfields
FROM
  (select userid, count(*) as numberofDeletedClassfields
   from your_table
   where classStatus = 6
   group by userid
   having count(*)>0) dc
  INNER JOIN
  (select userid, count(*) as numberofClassfields
   from your_table
   group by userid) c
  on dc.userid=c.userid
ORDER BY dc.numberofDeletedClassfields desc

EDIT2:とにかく、削除されたクラスフィールドの最大数を探している場合は、これを使用できます:

select max(numberofDeletedClassfields)
from (
  select count(*) as numberofDeletedClassfields
  from your_table
  where classStatus = 6
  group by userid) s
于 2012-12-26T11:30:30.000 に答える
0

GROUP BYあなたはあなたの質問に欠けています、

SELECT userid, COUNT(*) NumberOfClassified
FROM tableName
WHERE classStatus = 6
GROUP BY userID
ORDER BY NumberOfClassified DESC
于 2012-12-26T11:26:21.627 に答える
0
select count(*) as numberofClassifieds, userid from testtops
where classStatus=6
group by userid

これを試して

于 2012-12-26T11:27:14.760 に答える
0
SELECT userid, COUNT(*) NumberOfClassified
FROM tableName WHERE classStatus = 6 
GROUP BY  userID 
ORDER BY NumberOfClassified DESC limit 1
于 2012-12-26T11:29:26.647 に答える