计算MySQL组中最小的行数

时间:2015-06-09 20:05:14

标签: mysql

我有一个表,其中包含来自另一个表的所有不同名称,然后是一个包含名称所接收的最小值的列。例如,表格如下所示:

table1
Name | min_value
a    | 1
b    | 2
c    | 4

原始表格如下:

table2
Name | value
a    | 1
b    | 2
c    | 4
a    | 2
c    | 8
a    | 1

我想返回原始表中出现最小值的次数。所以,在这个例子中,它将返回如下内容:

output_table
Name | times_at_min
a    | 2
b    | 1
c    | 1

任何帮助将不胜感激,提前谢谢。

1 个答案:

答案 0 :(得分:1)

一种方法是:

SELECT m.Name,
       min_value,
       COUNT(CASE WHEN m.value = min_value THEN 1 END) As times_at_min
FROM mytable AS m
INNER JOIN (
   SELECT Name, 
          MIN(value) AS min_value       
   FROM mytable
   GROUP BY Name ) AS g
ON m.Name = g.Name
GROUP BY Name   

在子查询中,每MIN(value)选择Name。连接此子查询的派生表,您可以执行条件聚合,以便计算最小值在原始表中出现的次数。

Fiddle demo here