php - mysql PHP 行数 + 百分比

标签 php mysql

我有一个简单的表格:

-- ----------------------------
CREATE TABLE `clothes` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `shirt` text NOT NULL,
  `color` varchar(255) NOT NULL,
  PRIMARY KEY (`id`);
-- ----------------------------

示例表格内容:

id shirt color
1  long  white
2  short yellow
3  long  blue
4  long  blue
5  long  white
6  short white
7  short white
8  long  yellow
9  long  yellow
10 short yellow

我的最终目标是将结果输入这种格式:

<ul>
<li>Total Rows: <?php echo $totalRows; ?></li>

<li>total yellow count:   <?php echo $yellowCount; ?></li>
<li>total yellow percent: <?php echo $yellowPercentage; ?></li>

<li>total blue count:    <?php echo $blueCount; ?></li>
<li>total blue percent:  <?php echo $bluePercentage; ?></li>

<li>total white count:    <?php echo $whiteCount; ?></li>
<li>total white percent:  <?php echo $whitePercentage; ?></li>
</ul>

结果(四舍五入的百分比):

  <ul>
    <li>Total Rows: 10 </li>

    <li>total yellow count:  4</li>
    <li>total yellow percent: 40%</li>

    <li>total blue count:    2</li>
    <li>total blue percent:  20%</li>

    <li>total white count:    4</li>
    <li>total white percent:  40%</li>
    </ul>

我一直在试验各种代码,但没有任何东西让我到达我需要的位置:

 <?php

    $con = mysql_connect("localhost","root","password");
    if (!$con)
      {
      die('Could not connect: ' . mysql_error());
      }

    mysql_select_db("inventory", $con);

   // Make a MySQL Connection

$query = "SELECT color, COUNT(color) FROM clothes GROUP BY color"; 

$result = mysql_query($query) or die(mysql_error());

// Print out result
while($row = mysql_fetch_array($result)){
    echo "There are ". $row['COUNT(color)'] ." ". $row['color'] ." items.";
    echo "<br />";
}

    ?>

这让我几乎完成了这个——但我需要能够分离插入到 HTML 中的结果:

There are 4 white items.
There are 4 yellow items.
There are 2 blue items.

如有任何想法,我们将不胜感激。谢谢。

最佳答案

这是你可以做的:

SELECT color, COUNT(*) AS color_count FROM clothes GROUP BY color

你应该得到这样的结果:

color    color_count
yellow   7
red      1
white    9

此数据应该足以让您计算总行数(所有 color_count 值的总和)及其百分比(只需将它们相除)。

所以,在 php 中你会有类似的东西:

$query = "SELECT color, COUNT(*) AS color_count FROM clothes GROUP BY color";
$result = mysql_query($query);
$values = array();
$pct = array();
$total = 0;

while ($row = mysql_fetch_assoc($result)) {
    $values[$row["color"]] = $row["color_count"];
    $total += $row["color_count"];
}

foreach($values as $key => $value) {
    $pct[$key] = $value/$total;
}

所以,最后你得到的是,$values["yellow"]会给你黄色衣服的数量,而$pct["yellow"]*100 将为您提供黄色衣服的百分比。

关于php - mysql PHP 行数 + 百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9690745/

相关文章:

mysql - 删除重复的用户元

mysql - 类似Twitter的数据库表结构

php - PHP 中的 Gettext 需要调用 setlocale(LC_MESSAGES, NULL)

PHP 数组包含太多元素

php - 如何在没有验证码的情况下保护联系表?

php - 自动检测 PHP Laravel 应用程序中的所有路由?

php - 使用 PHP 归档的 BLOB URL

php - 如何获取此语句中的设备 token ?

仅限今年的 MySQL(now() - 间隔 1 个月)

php - MAMP Pro 中有多个 MySQL 版本?