【发布时间】:2014-05-27 12:34:06
【问题描述】:
使用 SQL,我想创建一种直方图。数据本身已经以某种方式组织起来,这使得创建直方图变得简单直接。简化的查询基本上如下所示:
SELECT rank, COUNT(*) AS count FROM ranks GROUP BY rank ORDER BY rank;
这给了我一个如下表:
+------+-------+
| rank | count |
+------+-------+
| 0 | 20 |
| 1 | 15 |
| 2 | 9 |
| 6 | 3 |
| 9 | 2 |
+------+-------+
问题:为了进一步处理数据,我要求明确给出零箱。在这种情况下(知道我的排名从 0 到 9),我需要一个有 10 行的表(例如排名 3、4、5、7 和 8 将在表中明确说明计数 0)。
我考虑过创建一个以排名为值的临时表并将我的查询连接到该表,但这似乎并不特别优雅。有没有更好的方法? (避免复杂的程序)。
【问题讨论】:
-
不。没有“优雅”的方式。 sql dbs 无法凭空生成数据。如果您对某个特定群体一无所有,那么您将一无所获。
-
有没有与ranks表相关的表?你的散文确实提到了零垃圾箱。这是怎么回事?
-
@DanBracuk 在原来的数据库中,查询比较复杂,结果是多表join的。简短描述的用例:我有一个带有相关/不相关项目的注释数据集,我想创建统计信息,在特定排名上找到多少相关项目。由于我必须执行多个此类查询并将结果传输到另一个应用程序以进行进一步处理,因此列出零箱将使我的生活变得更加轻松。