我有一个表,其中包含来自另一个表的所有不同名称,然后是一个包含名称所接收的最小值的列。例如,表格如下所示:
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
任何帮助将不胜感激,提前谢谢。
答案 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
。连接此子查询的派生表,您可以执行条件聚合,以便计算最小值在原始表中出现的次数。