Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 每个月的平均客户支出以及每个月的订购项目数量_Java_Mysql_Sql_Jdbc - Fatal编程技术网

Java 每个月的平均客户支出以及每个月的订购项目数量

Java 每个月的平均客户支出以及每个月的订购项目数量,java,mysql,sql,jdbc,Java,Mysql,Sql,Jdbc,我有4张桌子: CUSTOMER (idCustomer,name,phone,email, markdown) ORDER (idOrder,day,Customer_idCustomer) ORDERITEM (idOrderItem, quantity, Order_idOrder, Product_idProduct) PRODUCT (idProduct,name,price,description). 查询的目的是什么: 每个月的平均客户支出(每个客户) 订购物品的数量 我已经写了

我有4张桌子:

CUSTOMER (idCustomer,name,phone,email, markdown)
ORDER (idOrder,day,Customer_idCustomer)
ORDERITEM (idOrderItem, quantity, Order_idOrder, Product_idProduct)
PRODUCT (idProduct,name,price,description).
查询的目的是什么:

  • 每个月的平均客户支出(每个客户)

  • 订购物品的数量

  • 我已经写了一些关于这个数据库的查询。
    因为我是用JDBC为Java应用程序做这项工作的,也许我可以拆分这两个查询并分别计算平均值,但最好的方法是什么?有没有办法只用两个SQL查询就可以做到这一点

    谢谢你的帮助

    我用于降价的查询:

    String sql = "SELECT c.markdown, SUM(oi.quantity * p.price) 
    FROM orderitem oi, `order` o, product p, customer c 
    WHERE c.idCustomer = o.Customer_idCustomer 
    AND oi.Order_idOrder=o.idOrder 
    AND oi.Product_idProduct=p.idProduct 
    AND o.idOrder=" + idOrderValue + " 
    GROUP BY oi.Order_idOrder";
    

    您希望使用
    JOIN
    s进行聚合查询。使用正确的
    JOIN
    语法!请勿在FROM子句中使用逗号:

    SELECT year(o.day) as yyyy,
           month(o.day) as mm,
           SUM(oi.quantity * p.price) / COUNT(DISTINCT c.idCustomer) as avg_customer_spending,
           SUM(oi.quantity) as num_items
    FROM customers c JOIN
         orders o
         ON c.idCustomer = o.Customer_idCustomer JOIN
         orderitem oi
         ON oi.Order_idOrder = o.idOrder JOIN
         product p
         ON oi.Product_idProduct = p.idProduct 
    GROUP BY year(o.day), month(o.day);
    

    另外,请设置当前查询的格式,使其可读。单行查询不容易阅读,这意味着我们无法帮助您。非常感谢您的快速响应。看起来效果不错。