MySQL查询将遗漏至少和大多数时间重复的结果

时间:2016-04-18 13:00:39

标签: mysql

我需要一个MySQL查询来获得没有大多数和最少重复值的结果。

这意味着什么?

如果这个MySQL查询:

 SELECT Ocjena,COUNT(*) FROM ocjenjivanje GROUP BY Ocjena; 

返回:

enter image description here

我需要查询,它会给我下一个结果:

Ocjena 
1
3
5

由于

3 个答案:

答案 0 :(得分:0)

试试这个:

SELECT o.*
FROM (SELECT Ocjena, COUNT(*) AS c FROM ocjenjivanje GROUP BY Ocjena) AS o
INNER JOIN (SELECT Min(c) AS l, Max(c) AS h FROM  (SELECT Ocjena, COUNT(*) AS c FROM ocjenjivanje GROUP BY Ocjena)) AS m
ON o.c <> m.l AND o.c <> m.h
----OR
--ON o.c NOT IN(m.l, m.h)

或者您可以使用此查询:

SELECT Ocjena, c
FROM
( SELECT o.*, @min:=IF(@min > o.c, o.c, @min) AS l, @max:=IF(@max < o.c, o.c, @max) AS h
  FROM (SELECT Ocjena, COUNT(*) AS c FROM ocjenjivanje GROUP BY Ocjena) AS o
  , (select @max:=0, @min:=32000) AS m) AS x
WHERE c NOT IN(l, h)

答案 1 :(得分:0)

这是我的解决方案。

我不知道我是否可以让自己看起来更专业或更快,或类似的东西。

SELECT *    FROM     `Ocjenjivanje`  WHERE Ocjena != (    SELECT Ocjena 
FROM     `Ocjenjivanje`
GROUP BY `Ocjena`
ORDER BY `Ocjena` DESC
LIMIT 1) AND OCjena != ( SELECT Ocjena
FROM     `Ocjenjivanje`
GROUP BY `Ocjena`
ORDER BY `Ocjena` ASC
LIMIT 1)
GROUP BY `Ocjena`

答案 2 :(得分:0)

你可以从你的答案中发布的查询得到这样的结果(但它不会返回有问题的行),使用以下查询之一:

tempScorePlayer = tempScorePlayer + number