Mysql 如何选择同一id的第一个数据和同一id sql列的和

Mysql 如何选择同一id的第一个数据和同一id sql列的和,mysql,sql,Mysql,Sql,我有这样的数据 |id|id_barang|in|out|stock| |1|1|2|0|2| |2|1|2|0|4| |3|1|0|1|3| |4|2|2|0|2| |5|2|1|0|3| |6|2|0|1|2| 我想要的结果是由id_barang分组 |Id_barang|sum(in)|sum(out)|first(stock)| |1|4|1|2| |2|3|1|2| 您可以对第一只股票使用MIN函数。它的工作原理类似于求和或计数。您可以尝试以下方法: SELECT Id_baran

我有这样的数据

|id|id_barang|in|out|stock|
|1|1|2|0|2|
|2|1|2|0|4|
|3|1|0|1|3|
|4|2|2|0|2|
|5|2|1|0|3|
|6|2|0|1|2|
我想要的结果是由id_barang分组

|Id_barang|sum(in)|sum(out)|first(stock)|
|1|4|1|2|
|2|3|1|2|

您可以对第一只股票使用MIN函数。它的工作原理类似于求和或计数。

您可以尝试以下方法:

SELECT Id_barang, SUM(in), SUM(out), FIRST(stock)
FROM data
GROUP BY Id_barang
不幸的是,Mysql不支持窗口函数。试试这个

SELECT b.id_barang, 
       sum_in, 
       sum_out, 
       a.stock 
FROM   yourtable A 
       INNER JOIN (SELECT id_barang, 
                          Sum(in)  sum_in, 
                          Sum(OUT) sum_out, 
                          Min(id)  AS min_id 
                   FROM   yourtable 
                   GROUP  BY id_barang) B 
               ON a.id_barang = b.id_barang 
                  AND a.id = b.min_id 

此查询按Id_barang获取表组的所有记录。它给出了股票的第一个记录。 选择t1.Id_barang、sumt1.in、sumt1.out,然后选择mint2.stock 来自表2,其中t2.Id\u barang=t1.Id\u barang 从表_name t1
按Id分组\u barang

您可以通过以下方式进行查询:

SELECT id_barang,SUM(in) as total_in,SUM(out) as total_out,stock
FROM stock
GROUP BY id_barang
如果发现任何错误,则必须更改列名,我认为“in”和“out”无效。您将“in”改为“in\u change”,将“out”改为“out\u change”。尝试使用此专栏,它可以根据您的需要工作。我确实试过

SELECT id_barang,SUM(in_change) as total_in,SUM(out_change) as total_out,stock
FROM stock
GROUP BY id_barang

您正在使用哪个数据库