我试图弄清楚如何使用多个左外连接来计算平均分数和卡片数量。我有以下架构和测试数据。每副牌有 0 或更多的分数和 0 或更多的牌。我需要计算每副牌的平均分数和卡数。为了方便起见,我使用 mysql,我最终希望它在 Android 手机上的 sqlite 上运行。
mysql> 从卡组中选择 *; +----+-------+ | 编号 | 姓名 | +----+-------+ | 1 | 一个 | | 2 | 二 | | 3 | 三 | +----+-------+
mysql> 从分数中选择 *; +---------+-------+----------+--------+ | 分数 ID | 价值 | 日期 | 甲板编号 | +---------+-------+----------+--------+ | 1 | 6.58 | 2009-10-05 20:54:52 | 1 | | 2 | 7 | 2009-10-05 20:54:58 | 1 | | 3 | 4.67 | 2009-10-05 20:55:04 | 1 | | 4 | 7 | 2009-10-05 20:57:38 | 2 | | 5 | 7 | 2009-10-05 20:57:41 | 2 | +---------+-------+----------+--------+
mysql> 从卡中选择 *; +--------+--------+------+--------+ | 卡号 | 正面 | 返回 | 甲板编号 | +--------+--------+------+--------+ | 1 | 前 | 返回 | 2 | | 2 | 前 | 返回 | 1 | | 3 | f1 | b2 | 1 | +--------+--------+------+--------+
我运行以下查询...
mysql> 选择deck.name, sum(score.value)/count(score.value) "Ave", -> 计数(card.front)“计数” -> 从甲板 -> 在deck.id=score.deckId 上的左外连接分数 -> 在deck.id=card.deckId 上的左外连接卡 ->按deck.id分组; +--------+------+--------+ | 姓名 | 大道 | 计数 | +--------+------+--------+ | 一个 | 6.0833333333333 | 6 | | 二 | 7 | 2 | | 三 | 空 | 0 | +--------+------+--------+
......我得到了平均值的正确答案,但卡片数量的错误答案。在我拔头发之前,有人能告诉我我做错了什么吗?
谢谢!
约翰