How to separate a record to get the amount

87 views Asked by At

I got total 160 Quantity in the Stock.

How to get first 100 quantity total amount and last 60 quantity total amount?

The table is sort by Date and Stock ID.

tblStock
+----------+------------+----------+----------+------------+
+ Stock ID + Product ID + Quantity + Amount   + Date       +
+----------+------------+----------+----------+------------+
+        1 +       1001 +       50 +    10.00 + 2014-11-10 +
+----------+------------+----------+----------+------------+
+        2 +       1001 +       70 +    11.00 + 2014-11-11 +
+----------+------------+----------+----------+------------+
+        3 +       1001 +       30 +     9.90 + 2014-11-12 +
+----------+------------+----------+----------+------------+
+        4 +       1001 +       10 +    10.20 + 2014-11-13 +
+----------+------------+----------+----------+------------+

I need two result of below. Thanks

Result A (first 100 quantity)
+------------+----------+--------------+
+ Product ID + Quantity + Total Amount +
+------------+----------+--------------+
+       1001 +      100 +      1050.00 +
+------------+----------+--------------+

Result B (last 60 quantity)
+------------+----------+--------------+
+ Product ID + Quantity + Total Amount +
+------------+----------+--------------+
+       1001 +       60 +       619.00 +
+------------+----------+--------------+
2

There are 2 answers

1
Kenneth On

For first 100

select Product ID, sum(Quantity) as Quantity, sum(Amount) as TotalAmount from (SELECT * from tblstock order by tblStock.Stock ID ASC limit 100) t1 GROUP BY Date,Product ID

For last 60

select Product ID, sum(Quantity) as Quantity, sum(Amount) as Total Amount from (SELECT * from tblstock order by tblStock.Stock ID DESC limit 60) t1 GROUP BY Date,Product ID

3
Ataboy Josef On

Try this:

Result A:

SELECT A.ProductID AS 'Product ID', '100' AS 'Quantity', SUM(A.Amount) as 'Total Amount'
FROM tblStock A
WHERE StockID IN (SELECT B.StockID from tblStock B ORDER BY B.StockID ASC LIMIT 100)

Result B:

SELECT A.ProductID AS 'Product ID', '60' AS 'Quantity', SUM(A.Amount) as 'Total Amount'
FROM tblStock A
WHERE StockID IN (SELECT B.StockID from tblStock B ORDER BY B.StockID DESC LIMIT 60)

Instead of using IN, you can use JOIN.

Result A:

SELECT A.ProductID AS 'Product ID', '100' AS 'Quantity', SUM(A.Amount) AS 'Total Amount'
FROM tblStock AS A
INNER JOIN
 (SELECT StockID from tblStock ORDER BY StockID ASC LIMIT 100) AS B
ON A.StockID = B.StockID

Result B:

SELECT A.ProductID AS 'Product ID', '60' AS 'Quantity', SUM(A.Amount) AS 'Total Amount'
FROM tblStock AS A
INNER JOIN
 (SELECT StockID from tblStock ORDER BY StockID DESC LIMIT 60) AS B
ON A.StockID = B.StockID