php - 统计MySQL查询中的多个结果

标签 php mysql

基本上我拥有的是一个评级系统。 4 个类别 1-5 星。我想做的是统计每个类别的结果。例如:

  Category 1: 20 1 star, 32 2 star, 40 3 star, 35 4 star, 19 5 star
  ...
  Category 4: 10 1 star, 12 2 star, 45 3 star, 54 4 star, 2 5 star

我知道我只能执行 20 个查询,(SELECT COUNT(*) WHERE BizID=$id AND Category1=1/SELECT COUNT(*) WHERE BizID=$id AND category1=2...),但我想知道是否有更有效的方法。看起来如果我有大量的点击量,或者有大量的收视率,剧本在这一点上就会陷入困境。任何帮助将不胜感激。

Table Structure
RateID - int(10)
UserID - varchar(8)
BizID - varchar(8)
Cat1 - int(1)
Cat2 - int(1)
Cat3 - int(1)
Cat4 - int(1)
Date - int(10)

最佳答案

您可以使用 CASE 语句一次性获取按类别和星级评分的计数,如下所示:

SELECT
    SUM
    (
        CASE
            WHEN Cat1 = 1 THEN 1
            ELSE 0
        END
    ) Cat1_1,
    SUM
    (
        CASE
            WHEN Cat1 = 2 THEN 1
            ELSE 0
        END
    ) Cat1_2,
    SUM
    (
        CASE
            WHEN Cat1 = 3 THEN 1
            ELSE 0
        END
    ) Cat1_3,
    SUM
    (
        CASE
            WHEN Cat1 = 4 THEN 1
            ELSE 0
        END
    ) Cat1_4,
    SUM
    (
        CASE
            WHEN Cat1 = 5 THEN 1
            ELSE 0
        END
    ) Cat1_5,
    SUM
    (
        CASE
            WHEN Cat2 = 1 THEN 1
            ELSE 0
        END
    ) Cat2_1,
...
...
... 
FROM mytable
WHERE BizID=$id;

关于php - 统计MySQL查询中的多个结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24691202/

相关文章:

Mysql循环遍历选中的列,在循环中执行Insert查询

mysql - 不唯一/表别名 'respite'

php - 我怎样才能拆开一根绳子?

php - 如何通过从数据库中获取值来创建可靠的下拉列表

php - 将 PHP 数组数据保存到 mysql 表的最佳方法

javascript - phantomjs - 页面加载后执行 Javascript 函数,然后输出新的更改

php - mysqli 查询中的问题 - 时间戳

php - 循环/插入图像

php - 无法使用输出 json_encode SELECT LEFT 和 JOIN 表

php - 我想在数据库列中查找双引号中的单词