查询数据库中多个字段重复值,输出个数,并相加。

img

现在想要知道表中houqingbu=501 中 字段houqingbu和字段fw 中a有几个,b有几个,c有几个。

然后输出a=1 b=3 c=2

$k=表中houqingbu=501的数量

$a=1 * 10
$b=3 * 5
$c=2 * 1

然后运算总分 = ($a+$b+$c)/($k * 20)
输出结果

abc的数据包含的个数,应该是a=1个 b=3个 c=2个
现在调出的是包含a的条数b的条数。这样数字就不对了。
最后的结果应该是a=1个 b=3个 c=2个 K=3条
运算总分的结果应该是0.45

下面的sql语句获取a,b,c各个字段的数目:

SELECT fw,  COUNT(houqingbu) as num
FROM table_name
WHERE houqingbu=501
GROUP BY fw

img

下面的语句获取houqingbu=501的数目:

SELECT houqingbu, COUNT(houqingbu) as num
FROM table_name
WHERE houqingbu=501

img

试试下边的代码:

$dbCon = mysqli_connect("localhost","root","123456","test"); 
$sql ="SELECT houqingbu,fw,count(*) AS num FROM test0222 WHERE houqingbu = 501 GROUP BY fw ORDER BY fw ASC LIMIT 3";
$result = mysqli_query($dbCon,$sql);
$k = '';
while($row=mysqli_fetch_array($result)){
    if($k == ''){
        $k = $row['houqingbu'];
    }
    switch($row['fw']){
        case 'a':
            $a = $row['num'] * 10;
            break;
        case 'b':
            $b = $row['num'] * 5;
            break;
        case 'c':
            $c = $row['num'] * 1;
            break;
        default:
            $d = '';
            break;
    }
}
$total = ($a+$b+$c)/($k*20);
echo '运算总分:'.$total;
mysqli_close($dbCon);
SELECT * from (SELECT *, CONCAT(name,code) as nameAndCode from tb_table) t WHERE t.nameAndCode in 
(
    SELECT nameAndCode from (SELECT CONCAT(name,code) as nameAndCode from tb_table) tt GROUP BY nameAndCode HAVING count(nameAndCode) > 1
)
DELETE from tb_table WHERE id not in 
(
    SELECT maxid from (SELECT MAX(id) as maxid, CONCAT(name,code) as nameAndCode from tb_table GROUP BY nameAndCode) t
)

先把重复的查询出,在用count函数和sum函数计算即可

https://ask.csdn.net/questions/1080765?spm=1005.2026.3001.5635&utm_medium=distribute.pc_relevant_ask_down.none-task-ask-2~default~OPENSEARCH~Rate-1.pc_feed_download_top3ask&depth_1-utm_source=distribute.pc_relevant_ask_down.none-task-ask-2~default~OPENSEARCH~Rate-1.pc_feed_download_top3ask