GROUP BY 1列,COUNT 2列

时间:2019-05-15 16:59:38

标签: mysqli group-by count

我需要按供应商ID分组,计算尚未出售或失败的数量,还要计算该供应商的已售金额。

|---vendor id---|---failed---|---sold---|
|    1234       |   FAILED   |          |
|    9876       |   FAILED   |          |
|    1234       |   GRADE A  |   sold   |
|    1234       |   GRADE A  |   sold   |
|    9876       |   GRADE A  |   sold   |

我尝试了无数查询,这些查询是我在堆栈上发现的,而我只是没有运气。

$sql = 'SELECT *,sold,COUNT(sold),COUNT(*) FROM wp_drives WHERE sold != "sold" AND grade != "Grade FAIL" GROUP BY vendor_id';
while($row = mysqli_fetch_assoc($result)) {
    echo "<tr>";
    echo "<td style='text-align: center;'>" .$row['vendor_id']. "</td>";
    echo "<td style='text-align: center;'><span class='qty'>".$row['COUNT(*)']."</span></td>";
    echo "<td style='text-align: center;'>" .$row['capacity']. "</td>";
    echo "<td style='text-align: center;'>" .$row['form_factor']. "</td>";
    echo "<td style='text-align: center;'>" .$row['rpm']. "</td>";
    echo "<td style='text-align: center;'><span class='sold'>".$row['COUNT(sold)']."</span></td>";
    echo "</tr>";
}

在我的表中,我将供应商分组,该组中有所有硬盘的数量,然后一些被出售,并且需要显示该组中已经出售了多少个。现在,它返回的卖出价格与数量相同。

1 个答案:

答案 0 :(得分:0)

在对数据进行分组时不能使用*,所分组的列应成为选择条件的一部分。试试这个

  

选择vendor_id,COUNT(*)作为wp_drives在哪里出售的计数!='sold'   AND等级!='失败等级'GROUP BY vendor_id