簡體   English   中英

計算至少一組MySQL的行數

[英]Count number of rows that are at the minimum of a group 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

任何幫助將不勝感激,在此先感謝。

一種方法是:

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   

在子查詢中,每個Name選擇MIN(value) 通過與該子查詢的派生表連接,您可以執行條件聚合 ,以計算最小值在原始表中出現的次數。

小提琴演示在這里

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM