複数の左外部結合を使用して平均スコアとカード数を計算する方法を見つけようとしています。次のスキーマとテスト データがあります。各デッキには 0 以上のスコアと 0 以上のカードがあります。各デッキの平均スコアとカード数を計算する必要があります。便宜上 mysql を使用していますが、最終的にはこれを Android フォンの sqlite で実行したいと考えています。
mysql> デッキから * を選択します。 +----+---------+ | | ID | 名前 | +----+---------+ | | 1 | 1 つ | | | 2 | 2 | | | 3 | 3 | +----+---------+
mysql> select * from score; +---------+-------+---------------------+--------+ | | スコア ID | 値 | 日付 | デッキ 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> select * from card; +--------+-------+------+--------+ | | カード ID | フロント | 戻る | デッキ ID | +--------+-------+------+--------+ | | 1 | フロン | 戻る | 2 | | | 2 | フロン | 戻る | 1 | | | 3 | f1 | b2 | 1 | +--------+-------+------+--------+
次のクエリを実行します...
mysql> デッキ名を選択, sum(スコア.値)/カウント(スコア.値) "Ave", -> count(card.front) "Count" →デッキから -> Deck.id=score.deckId の左外部結合スコア -> Deck.id=card.deckId の左外側の参加カード -> Deck.id でグループ化; +------+-----------------+-------+ | | 名前 | アベニュー | カウント | +------+-----------------+-------+ | | 1 つ | 6.083333333333 | 6 | | | 2 | 7 | 2 | | | 3 | ヌル | 0 | +------+-----------------+-------+
...そして、平均については正しい答えが得られますが、カードの数については間違った答えが得られます。髪を抜く前に、誰かが私が間違っていることを教えてもらえますか?
ありがとう!
ジョン