MySQL查找不同数量和价格的商品的总销售额

Posted

技术标签:

【中文标题】MySQL查找不同数量和价格的商品的总销售额【英文标题】:MySQL finding total sale of items of varying quantity and price 【发布时间】:2021-04-07 01:31:15 【问题描述】:

基本上,我正在尝试创建一个 html 表格,该表格显示 MySQL 中表格中的各种项目 - 关于书籍和书籍销售。基本上我需要

    找出每本书的总销售额,这些书可以是同一本书,但价格不同,每笔销售的数量不同。到目前为止,我已经成功地在 php 中创建了一个循环来显示这样的表格,它看起来像这样:

很遗憾,总销售价格计算不正确,我正试图找出原因,因为我怀疑这与我的查询有关。

这是有问题的表格:

正如您在表格中看到的,同一本书可以出现多种时间,并且具有不同的数量和单价。我的一些计算是正确的,但其他一些是不正确的。例如,图书 ID 103 不正确。

这是我的 HTML 代码,再次感谢您尝试帮助我解决这个问题!:

<!DOCTYPE html>
<html lang="en">
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<link rel="stylesheet" href="new.css">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>

    <nav class="navbar navbar-default navbar navbar-inverse">
        <div class="container">
        <h2> <a class="head" href="base.php" style="text-decoration: none;">Database Project</a> <a class="btn btn-danger btn-sm main" href="login.php" role="button">Sign Out</a></h2>
        </div>
    </nav>

    <div class="container">
    <div class="jumbotron">
        <h1>Book Report:</h1><br>
        <table>
            <tr>
                <th>ID</th>
                <th>Title</th>
                <th>Quantity</th>
                <th>Total Sale Price</th>
    
            </tr>
            <?php
            $conn = mysqli_connect("localhost","root","","Zion");
            if ($conn-> connect_error)
                die("Connection Failed:". $conn-> connect_error);
            
            $sql = "SELECT ID,Title,(SELECT Sum(Quantity) from Sale where BookId = Book.id ) as Quantity,(SELECT Sum(UnitPrice) from Sale where BookId = Book.id ) as Price from Book";
            $result = $conn-> query($sql);
            if ($result = $conn->query($sql)) 
                while($row = $result->fetch_assoc()) 
                    echo "<tr><td>". $row["ID"] . "</td><td>". $row["Title"]."</td><td>". $row["Quantity"]. "</td><td>". "$".$row["Price"]. "</td></tr>";
                
                echo"</table>";
            
            $conn-> close()
            ?>
            <!-- Generate a report that for each book, displays the book id, the book title, 
            the quantity and the total sales price, sorts by the book id in increasing order; -->

</div>

</body>
</html>

【问题讨论】:

你不需要 Sum(Quantity*price) 吗? 嗯,你可能是对的,知道我将如何实现它吗? 只需将两者相乘 - 从销售中选择总和(数量*价格)......等 为什么还要子查询?可以select ID,Title, sum(Quantity) as sold, sum(Quantity * UnitPrice) as 'total sales' from Sale group by id 非常感谢您的建议! 【参考方案1】:

以下使用连接的 sql 查询将帮助您实现目标。该查询检索每本书(按Book.IdBook.Title 分组),每次销售时存储在QuantityPrice 中的总销量,通过将特定书籍的数量乘以每本书的单价来确定那个时候订的。

SELECT 
    Book.ID,
    Book.Title,
    SUM(Sale.Quantity) as Quantity,
    SUM(Sale.UnitPrice*Sale.Quantity) as Price
FROM
    Sale 
INNER JOIN
    Book on Book.Id = Sale.BookId
GROUP BY
    Book.ID, Book.Title

我使用了相同的列名,所以这应该像你的 php 代码一样工作,例如:

$sql="SELECT Book.ID, Book.Title, SUM(Sale.Quantity) as Quantity, SUM(Sale.UnitPrice*Sale.Quantity) as Price FROM Sale INNER JOIN Book on Book.Id = Sale.BookId GROUP BY Book.ID, Book.Title";

【讨论】:

以上是关于MySQL查找不同数量和价格的商品的总销售额的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server 2008 R2-查询以获取按月销售的总销售额和数量

MySQL 练习<4>

MySQL 练习<4>

如何用数据库mysql查询产品的产品编号和销售数量的总和

利用Python爬虫爬取淘宝商品做数据挖掘分析实战篇,超详细教程

设计题 有一个MySQL数据库store,在store数据库中含有一个销售表sale,用于存放商品的销售记录。