当前位置: 首页 > 知识库问答 >
问题:

对没有相同列的行组执行联合。正在尝试生成空直方图库

糜帅
2023-03-14

我正在使用MySQL。

我有一个表grades,看起来如下所示:

course_id grade
101        90
101        100
101        100
102        92
102        85
102        90

我有一个视图,使用下面的查询计算每个类在每个bin中有多少个等级。

SELECT
    *,
    COUNT(grade_bin) as count
FROM
    (SELECT
        course_id, 
        FLOOR(grade/5.00)*5 AS grade_bin
    FROM ranked_grades) as t
        GROUP BY course_id, grade_bin
        ORDER BY course_id, grade_bin ASC;

这将返回

course_id grade_bin count
101         90        1
101         100       2
102         85        1
102         90        2

我想在此视图中添加空箱,如下所示:

course_id grade_bin count
101          40       0
101          45       0
...         ...      ...
101          100      2
102          40       0
...         ...      ...

因此,箱增加5,从40开始,到100停止。我的想法是为空bin创建一个表,插入每个等级bin和一个0计数,然后使用union,但我无法使union工作,因为我在空bin表中没有course_id列(我也不想--有很多,而且它们可能会更改)。如何对每组course_ids进行联合?

共有1个答案

彭骏
2023-03-14

从一个箱列表开始。然后使用交叉联接生成所有行。最后,加入现有数据。

所以:

SELECT c.course_id, gb.grade_bin, COUNT(rg.course_id) as cnt
FROM (SELECT 40 as grade_bin UNION ALL
      SELECT 45 as grade_bin UNION ALL
      SELECT 50 as grade_bin UNION ALL
      . . . 
      SELECT 100 as grade_bin UNION ALL
     ) gb CROSS JOIN
     (SELECT DISTINCT course_id
      FROM ranked_grades 
     ) c LEFT JOIN
     ranked_grades rg
     ON rg.course_id = c.course_id AND
        rg.grade >= gb.grade_bin AND
        rg.grade < gb.grade_bin + 5
GROUP BY c.course_id, gb.grade_bin;

注意:这将从ranked_grades表中检索课程。您还可以使用courses表,该表可能也是可用的。

 类似资料:
  • 问题内容: 我试图在Java中实现一个非常简单的Trie,该Trie支持3种操作。我希望它具有一个insert方法,一个has方法(即trie中的某个单词)和一个toString方法以字符串形式返回trie。我相信我的插入工作正常,但是has和toString证明很困难。到目前为止,这就是我所拥有的。 特里类。 和节点类 因此,基本上,在创建Trie时,将创建一个TrieNode作为具有26个子级

  • 我有2%s: 我需要这样的联合: 函数不起作用,因为列的编号和名称不同。 我怎么能这么做?

  • 目前我正在为学校做一个项目,下面是要求: 编写一个Temperature类,它将保持以华氏为单位的温度,并提供获取以华氏、摄氏度和开尔文为单位的温度的方法。该类应具有以下字段: :保持华氏温度的倍增器。 该类应具有以下方法: :构造函数接受华氏温度(双倍)并将其存储在ftemp字段中。 :set Fahrenheit方法接受一个华氏温度(作为双值),并将其存储在ftemp字段中。 :返回ftemp

  • 我的量角器套件里有15个规格。我想要并行运行这些脚本,并且,想要在这次执行中生成统一的报告。 通过在配置文件中添加标记“shard testfiles:true”,我可以并行运行这些脚本。但是,我不能得到合并报告(只能在报告中得到最后执行的spec的结果)。

  • 运行python main。py其中为main。py具有相对导入将失败。 梅因。派克 other.py PEP 338——以脚本形式执行模块很明显,显式相对导入无法从主模块中工作。 2.5b1的发布显示了这个PEP和PEP 328之间令人惊讶的(尽管回想起来很明显)相互作用——显式的相对导入不适用于主模块。这是因为相对导入依赖于来确定当前模块在包层次结构中的位置。在主模块中,的值总是,因此显式的相

  • 我有一个示例数据集,如下所示 Col1 Col2 Col3 A 1,2,3 A123 A 4,5 A456 A 1,2,3 A456 A 4,5 A123 我参考了一些解决方案,并尝试了以下方法。但它只追加单个列。