mysql count() 每列的行条目大于 0

Posted

技术标签:

【中文标题】mysql count() 每列的行条目大于 0【英文标题】:mysql count() row entries per column above 0 【发布时间】:2012-05-05 01:47:32 【问题描述】:

我正在尝试运行总评分查询,其中一部分需要 $sel = mysql_query("SELECT SUM(col1, col2, col3, col4, col5, col6, col7, col8)/XXXX as total FROM rating WHERE shop_id = $shop_id");

XXXX 在哪里,我需要计算每列高于 0 的行条目数,然后将 TOTAL 除以 # 以获得总评分。

数学是: 总/大于 0 的值的个数

谢谢

我正在尝试计算 0 以上的条目数,这意味着 shop_id 为 1 的条目总数为 35。 35 除以 0 以上的条目数,即 5 得到总结果,不将 0 行/列作为投票。

这是我想要的与表中数据相关的输出。 shop_id 1 -> 35/7 = 5 shop_id 2 -> 42/ = 3 shop_id 3 -> 40/8 = 5

【问题讨论】:

非常模棱两可。示例数据和所需的输出可能会有所帮助。 【参考方案1】:
SELECT 
SUM(col1, col2, col3, col4, col5, col6, col7, col8)/
SUM(IF(col1 > 0, 1, 0), IF(col2 > 0, 1, 0), ... ) AS total 
FROM ratings 
WHERE shop_id = $shop_id")

... 替换为您正在测试的每一列的相同逻辑。由于您有条件地输出零或一,因此总和基本上与计数具有相同的目的。

不要引用我的语法 - 但这应该为您指明正确的方向。

【讨论】:

试过了,但一直报错,“arning: mysql_num_rows() 期望参数 1 是资源,给定的布尔值”我的代码中没有显示语法错误来指示语法问题。 如果您可以在 php 脚本之外运行 SQL,可能是最好的,可能是命令行或 PHPMyAdmin。 刚刚在 hiediSQL 中运行了我的查询:SELECT SUM(舒适 + 服务 + 氛围 + 友好 + 宽敞 + 体验 + bud_quality + bud_price + drink_price + space_cake + 无障碍 + 厕所访问)/24 作为总评分 WHERE shop_id = 1 是我使用的确切代码,24 是大于 0 的字段值的数量。它分为 2 行(具有匹配的 shop_id)和 12 列,构成总票数。我需要根据选票更改数字 24。摆弄 count() 但很迷茫,谢谢 你能解释一下你给我的代码到底在做什么吗?我想我知道我现在需要发生什么,只是无法实现 每个 IF(col1 > 0, 1, 0) 都说“如果列的值大于零,则提供值 1,否则提供值为零”。一旦你对每一列进行了检查,你会得到一系列的零和你将加在一起的零。例如,SUM(1,1,1,0,1,0,0,1) 基本上将为您提供每行值大于零的列数。

以上是关于mysql count() 每列的行条目大于 0的主要内容,如果未能解决你的问题,请参考以下文章

Mysql Count Columns 大于 0

每当有第 1 列的重复条目时,如何使用每列 2 的最后一个条目更新两列 Access 表?

如何遍历一个DataTable中的每行每列,并且为每行每列的最后一列赋值

递归似乎并没有在复杂的代码中停止[关闭]

mysql的行求和、列求和是啥?

MySQL中count的用法