简体   繁体   English

如何在mysql中获取每个组的最低值

[英]How to get Lowest value of each group in mysql

I want to get lowest value of each group from two table 我想从两个表中获得每个组的最小值

Table Are Below 表格如下

    Table 1                         Table 2         
|   GPN |   Amt |           |   GPN |   Date        |
|   A   |   10  |           |   A   |   2016-09-10  |
|   A   |   15  |           |   A   |   2016-09-18  |
|   A   |   20  |           |   B   |   2016-09-10  |
|   A   |   25  |           |   B   |   2016-09-11  |
|   A   |   30  |           |   B   |   2016-09-12  |
|   B   |   20  |           |   C   |   2016-10-12  |
|   B   |   40  |           |   C   |   2016-10-13  |
|   B   |   60  |           |   C   |   2016-10-14  |
|   B   |   80  |           |   D   |   2016-09-10  |
|   B   |   100 |           |   D   |   2016-10-13  |
|   C   |   3   |                           
|   C   |   6   |                           
|   C   |   9   |                           
|   C   |   12  |                           
|   C   |   15  |                           
|   D   |   7   |                           
|   D   |   10  |                           
|   D   |   13  |                           
|   D   |   16  |                           
|   D   |   19  |                           
|   D   |   22  |                           

How i want that value 我如何想要这个价值

For Example 例如

Date = 2016-09-10, 日期= 2016-09-10,

On That how many GPN are there so i have to get every GPN's Lowest Amt 关于那有多少个GPN,所以我必须获得每个GPN的最低金额

So Result Will be like this 所以结果会像这样

    Result          
|   GPN |   Amt |
|   A   |   10  |
|   B   |   20  |
|   D   |   7   |

I have tried by using ASC LIMIT 1 so obviously it will show only one raw but but i have no idea how to do that. 我已经尝试过使用ASC LIMIT 1,因此很明显它将仅显示一个原始数据,但是我不知道该怎么做。

and i did it with php loop but i am looking if it is possible in mysql query so that will awesome. 而且我用php循环做到了,但是我正在寻找是否有可能在mysql查询中这样做,这将很棒。

Inner join and group by 内部加入并分组

select table1.GPN, min(table2.Amt) 
from table1 
inner join table2 on table1.GPN= table2.GPN
where date(table2.date )  = str_to_date('2016-09-10', '%Y-%m-%d') 
group by table1.GPN

这是一个经典的聚合函数查询。

SELECT T1.GPN, MIN(Amt) FROM Table1 T1 INNER JOIN Table2 T2 ON T1.GPN = T2.GPN GROUP BY T1.GPN WHERE T2.Date = ?

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM