mysql - 选择删除分类广告最多的用户以及分类广告数量

标签 mysql sql

从如下表中,如何选择删除分类广告最多的用户以及删除分类广告的数量?在这里: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;

最佳答案

这将选择至少有一个已删除类字段的所有用户,并显示所有类字段的数量和所有已删除类字段的数量:

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

编辑2:无论如何,如果您正在寻找删除的类字段的最大数量,那么您可以使用以下方法:

select max(numberofDeletedClassfields)
from (
  select count(*) as numberofDeletedClassfields
  from your_table
  where classStatus = 6
  group by userid) s

关于mysql - 选择删除分类广告最多的用户以及分类广告数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14039915/

相关文章:

mysql - 当存在重复项时获取一条记录

sql - 如何在 BigQuery SQL 中获取特定字符集的所有内容?

mysql - 按日期和主要加入查询

当值为 NULL 时,MySQL 唯一索引不适用

SELECT...IN 的 Mysql 缓存

sql - 标签模式提供类似于 Stack Overflow 的标签同义词的功能

python2.7在virtualenv中安装MySQL-python错误 "failed with exit status 2"

mysql - 如何通过多个元组(行)找到共享一个属性(列)的对?

mysql - MYSQL中的Case语句,找不到Case?

php - 如何组合 2 个不同的过滤器