prosource

mysql select 쿼리를 사용하여 다음 행의 후속 열의 합계를 가져오는 방법

probook 2023. 9. 10. 12:22
반응형

mysql select 쿼리를 사용하여 다음 행의 후속 열의 합계를 가져오는 방법

재고 입력을 위해 SQL 쿼리를 하나 작성합니다.마지막 란에는 지난 주식 매입 총액이 필요합니다.

S No    Product Code    Qty     Qty Total
1       PO1             5       5  
2       PO1             12      17
3       PO1             10      27
4       PO1              8      35
5       PO1              9      44
6       PO1             16      60

마지막 열의 모든 행에 이전 수량을 추가합니다. 예를 들어 S 1번 수량은 5번입니다.S 2번에 수량 5와 12=17을 추가합니다.S No 3 5 + 12 + 10 = 27과 Soon을 추가합니다.

중복 질문이라면 죄송합니다.구글과 스택 오버플로우를 검색해 보았지만 답변을 받지 못했습니다.저는 MySQL을 처음 접합니다. 아래에 쿼리를 추가했습니다.SQL은 처음이라 도움을 주시면 감사하겠습니다.

미리 감사드립니다.

CREATE TABLE `stock_table` (
  `ID` int(11) NOT NULL,
  `product_code` varchar(20) NOT NULL,
  `qty` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

INSERT INTO `stock_table` (`ID`, `product_code`, `qty`) VALUES
(1, 'PO1', 5),
(2, 'PO1', 12),
(3, 'PO1', 10),
(4, 'PO1', 8),
(5, 'PO1', 9),
(6, 'PO1', 16);

당신은 총합이 필요합니다.MySQL v 8.0을 사용하는 경우 SUM window 기능을 사용할 수 있습니다 -

SELECT `ID`,
       `product_code`,
       `qty`,
       SUM(`qty`) OVER (PARTITION BY `product_code` ORDER BY `ID`)  Qty_Total
FROM `stock_table`;

fiddle

MariaDB 버전은 창 기능을 지원하지 않습니다.그러면 두 가지 선택지가 남습니다.하나는 상관 관계가 있는 하위 쿼리이고, 두 번째는 변수입니다.

첫 번째는 구현하기가 더 쉽습니다.

select st.*,
       (select sum(st2.qty)
        from stock_table st2
        where st2.product_code = st.product_code and
              st2.id <= st.id
       ) as running_qty
from stock_table st;

성능을 위해 다음 항목에 대한 인덱스를 사용할 수 있습니다.stock_table(product_code, id, qty).

행이 증가함에 따라 상관된 하위 쿼리를 사용하여 원하는 열을 합산할 수 있습니다.ID값 :

select t.*,
       ( select sum(`qty`) from `stock_table` where `ID` <= t.`ID` ) as "Qty Total"
  from `stock_table` t
 order by t.`ID`;

Demo

추신: 샘플 데이터가 고유하므로product_codevalue, 나는 관련된 부분을 포함할 필요가 없었습니다.product_code하위 쿼리 내에서 열이 일치하는 경우, 파생된 열을 다음으로 변환하는 것을 고려해 보십시오.

( select sum(`qty`) 
    from `stock_table` 
   where `ID` <= t.`ID` 
     and `product_code` = t.`product_code` ) as "Qty Total"

언급URL : https://stackoverflow.com/questions/57769194/how-to-get-subsequent-total-of-column-in-next-row-using-mysql-select-query

반응형