MariaDB [test]> set @ordered=0,@invoiced=0,@sold=0,@avgOrdQty=0;
|
Query OK, 0 rows affected (0.000 sec)
|
|
MariaDB [test]> SELECT P.code,O.state,
|
-> @ordered := OP.quantity AS ordered,
|
-> @invoiced := IFNULL((
|
-> SELECT SUM(IP.quantity) FROM invoices AS I
|
-> LEFT JOIN invoice_products AS IP ON IP.invoice_id = I.invoice_id
|
-> WHERE I.order_id = O.order_id AND IP.product_id = OP.product_id), 0) AS invoiced,
|
-> @sold := IF(O.state = 'confirmed', @ordered, @invoiced) AS sold,
|
-> @avgOrdQty := P.avgOrderQuantity AS avgOrdQty,
|
-> IF(@sold > @avgOrdQty, @avgOrdQty, @sold) AS avgSold
|
-> FROM order_products AS OP
|
-> JOIN orders AS O ON O.order_id = OP.order_id
|
-> JOIN products AS P ON P.product_id = OP.product_id
|
-> WHERE O.state != 'pending';
|
+------+-----------+---------+----------+------+-----------+---------+
|
| code | state | ordered | invoiced | sold | avgOrdQty | avgSold |
|
+------+-----------+---------+----------+------+-----------+---------+
|
| cod1 | confirmed | 30 | 11 | 30 | 3 | 3 |
|
| cod1 | confirmed | 10 | 20 | 10 | 3 | 3 |
|
| cod2 | confirmed | 2 | 2 | 2 | 1 | 1 |
|
+------+-----------+---------+----------+------+-----------+---------+
|
3 rows in set (0.002 sec)
|
|
MariaDB [test]> SELECT T.code, T.sold, SUM(T.avgSold)
|
-> FROM (
|
-> SELECT
|
-> P.code,
|
-> O.state,
|
-> @ordered := OP.quantity AS ordered,
|
-> @invoiced := IFNULL((
|
-> SELECT SUM(IP.quantity)
|
-> FROM invoices AS I
|
-> LEFT JOIN invoice_products AS IP
|
-> ON IP.invoice_id = I.invoice_id
|
-> WHERE I.order_id = O.order_id AND IP.product_id = OP.product_id
|
-> ), 0) AS invoiced,
|
-> @sold := IF(O.state = 'confirmed', @ordered, @invoiced) AS sold,
|
-> @avgOrdQty := P.avgOrderQuantity AS avgOrdQty,
|
-> IF(@sold > @avgOrdQty, @avgOrdQty, @sold) AS avgSold
|
-> FROM order_products AS OP
|
-> JOIN orders AS O
|
-> ON O.order_id = OP.order_id
|
-> JOIN products AS P
|
-> ON P.product_id = OP.product_id
|
-> WHERE O.state != 'pending'
|
-> ) AS T
|
-> GROUP BY T.code;
|
+------+-------------------------------------------+----------------+
|
| code | sold | SUM(T.avgSold) |
|
+------+-------------------------------------------+----------------+
|
| cod1 | 30.00000000000000000000000000000000000000 | 6 |
|
| cod2 | 2.00000000000000000000000000000000000000 | 1 |
|
+------+-------------------------------------------+----------------+
|
2 rows in set (0.001 sec)
|
|
MariaDB [test]> set @ordered='',@invoiced='',@sold='',@avgOrdQty='';
|
Query OK, 0 rows affected (0.000 sec)
|
|
MariaDB [test]> SELECT T.code, T.sold, SUM(T.avgSold)
|
-> FROM (
|
-> SELECT
|
-> P.code,
|
-> O.state,
|
-> @ordered := OP.quantity AS ordered,
|
-> @invoiced := IFNULL((
|
-> SELECT SUM(IP.quantity)
|
-> FROM invoices AS I
|
-> LEFT JOIN invoice_products AS IP
|
-> ON IP.invoice_id = I.invoice_id
|
-> WHERE I.order_id = O.order_id AND IP.product_id = OP.product_id
|
-> ), 0) AS invoiced,
|
-> @sold := IF(O.state = 'confirmed', @ordered, @invoiced) AS sold,
|
-> @avgOrdQty := P.avgOrderQuantity AS avgOrdQty,
|
-> IF(@sold > @avgOrdQty, @avgOrdQty, @sold) AS avgSold
|
-> FROM order_products AS OP
|
-> JOIN orders AS O
|
-> ON O.order_id = OP.order_id
|
-> JOIN products AS P
|
-> ON P.product_id = OP.product_id
|
-> WHERE O.state != 'pending'
|
-> ) AS T
|
-> GROUP BY T.code;
|
+------+------+----------------+
|
| code | sold | SUM(T.avgSold) |
|
+------+------+----------------+
|
| cod1 | 30 | 13 |
|
| cod2 | 2 | 1 |
|
+------+------+----------------+
|
2 rows in set (0.002 sec)
|
|
MariaDB [test]> set @ordered='',@invoiced='',@sold='',@avgOrdQty='';
|
Query OK, 0 rows affected (0.000 sec)
|
|
MariaDB [test]> SELECT P.code,O.state,
|
-> @ordered := OP.quantity AS ordered,
|
-> @invoiced := IFNULL((
|
-> SELECT SUM(IP.quantity) FROM invoices AS I
|
-> LEFT JOIN invoice_products AS IP ON IP.invoice_id = I.invoice_id
|
-> WHERE I.order_id = O.order_id AND IP.product_id = OP.product_id), 0) AS invoiced,
|
-> @sold := IF(O.state = 'confirmed', @ordered, @invoiced) AS sold,
|
-> @avgOrdQty := P.avgOrderQuantity AS avgOrdQty,
|
-> IF(@sold > @avgOrdQty, @avgOrdQty, @sold) AS avgSold
|
-> FROM order_products AS OP
|
-> JOIN orders AS O ON O.order_id = OP.order_id
|
-> JOIN products AS P ON P.product_id = OP.product_id
|
-> WHERE O.state != 'pending';
|
+------+-----------+---------+----------+------+-----------+---------+
|
| code | state | ordered | invoiced | sold | avgOrdQty | avgSold |
|
+------+-----------+---------+----------+------+-----------+---------+
|
| cod1 | confirmed | 30 | 11 | 30 | 3 | 3 |
|
| cod1 | confirmed | 10 | 20 | 10 | 3 | 10 |
|
| cod2 | confirmed | 2 | 2 | 2 | 1 | 1 |
|
+------+-----------+---------+----------+------+-----------+---------+
|
3 rows in set (0.001 sec)
|