首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL查询以排除最高计数和最低计数

问MySQL查询以排除最高计数和最低计数
EN

Stack Overflow用户
提问于 2016-04-12 11:33:30
回答 5查看 1.6K关注 0票数 1

我在MySql中有下表

代码语言:javascript
复制
Number
1
2
3
2
3
4
4
4

我想按数字计算,但不包括最高数和最低数。这应该是结果

代码语言:javascript
复制
Number  Count
2       2
3       2

请帮我处理这个问题。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2016-04-12 11:38:33

试试这个:

代码语言:javascript
复制
SELECT number, COUNT(*) cnt
FROM mytable
GROUP BY number
HAVING cnt <> (SELECT COUNT(*)
               FROM mytable
               GROUP BY number
               ORDER BY COUNT(*) LIMIT 1)
       AND               

       cnt <> (SELECT COUNT(*)
               FROM mytable
               GROUP BY number
               ORDER BY COUNT(*) DESC LIMIT 1)

HAVING子句中使用的两个子查询返回最小计数和最大计数。因此,HAVING子句的两个谓词过滤掉了计数最高和最低的组。

票数 2
EN

Stack Overflow用户

发布于 2016-04-12 11:45:42

一个解决方案是使用user variable和sub-query。

所需查询:

代码语言:javascript
复制
select Number, Count
from (
    select Number, count(*) as Count, @rank := @rank+1 as rank
    from t1 cross join (select @rank := 0) param
    group by Number
    order by Count ) t2 
where rank not in (1, @rank);

演示:

代码语言:javascript
复制
create table t1(Number int);
insert into t1 values(1),(2),(3),(2),(3),(4),(4),(4);

select Number, Count
from (
    select Number, count(*) as Count, @rank := @rank+1 as rank
    from t1 cross join (select @rank := 0) param
    group by Number
    order by Count ) t2 
where rank not in (1, @rank);

输出:

代码语言:javascript
复制
mysql> select Number, Count
    -> from (
    -> select Number, count(*) as Count, @rank := @rank+1 as rank
    -> from t1 cross join (select @rank := 0) param
    -> group by Number
    -> order by Count ) t2
    -> where rank not in (1, @rank);
+--------+-------+
| Number | Count |
+--------+-------+
|      2 |     2 |
|      3 |     2 |
+--------+-------+
2 rows in set (0.00 sec)
票数 1
EN

Stack Overflow用户

发布于 2016-04-12 11:38:34

代码语言:javascript
复制
select number,count(number)
from numbers 
where number not in ((select max(number) from numbers),(select min(number) from numbers)  )
group by number

方形小提琴演示

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36572081

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档