0

次のSQLを使用して2つのテーブルを結合し、結果を数えています

SELECT td.word, COUNT( instance ) AS wordcount
        FROM ws_words td
        LEFT JOIN ws_missed_words t ON ( t.wordID = td.wordID )
        WHERE quizID =1
        GROUP BY td.word

結果は

*****************************
|  word  |      wordcount   |
*****************************
|  list  |         3        |
|  miss  |         1        |
|  skip  |         1        |
| another|         0        |

これにもう1列追加したいと思います。以下に示すように、wordcount 列の実行中の合計を実行し、それを独自の列 (total と呼ばれる) に入れたいと思います。

欲しかった結果

 ****************************************************
    |  word  |      wordcount   |   totalwordcount  |
    *************************************************
    |  list  |         3        |     3             |
    |  miss  |         1        |     4             |
    |  skip  |         1        |     5             |
    | another|         0        |     5             |

私は次のことを試しました

SELECT td.word, COUNT( instance ) AS wordcount, SUM(wordcount) AS totalwordcount
FROM ws_words td
LEFT JOIN ws_missed_words t ON ( t.wordID = td.wordID )
WHERE quizID =1
GROUP BY td.word

しかし、私はエラーが発生します

#1054 - Unknown column 'wordcount' in 'field list'

それで次に試したのは

SELECT atable.word, atable.wordcount, SUM(atable.wordcount) AS totalwordcount FROM
(SELECT td.word, COUNT( instance ) AS wordcount
FROM ws_words td
LEFT JOIN ws_missed_words t ON ( t.wordID = td.wordID )
WHERE quizID =1
GROUP BY td.word) AS atable

しかし、私はこのようなものを得る

************************************************
|  word  |      wordcount   |   totalwordcount |
************************************************
|  list  |         1        |         5        |

質問

単語数の累計を含む列を作成するにはどうすればよいですか?

UPDATE STRAWBERRY'S METHOD は私に以下のコードを与えます


|  word  |      wordcount   |   running         |
*************************************************
| another|         0        |     1             |
|  miss  |         1        |     2             |
|  skip  |         1        |     3             |
|  list  |         3        |     4             |

各単語をランク付けしているようなので、単語数が最も少ない単語数が 1 から始まり、同じ単語数の単語が 2 つある場合は、アルファベット順にリストされます。

4

1 に答える 1

1

テストされていません。テストするものが何もないためです。ただし、1 つの方法としては、次のようなものがあります...

 SELECT x.*, COUNT(*) running
   FROM
      ( SELECT td.word
                  , COUNT( t.instance ) wordcount
               FROM ws_words td
               LEFT 
               JOIN ws_missed_words t 
                 ON t.wordID = td.wordID 
              WHERE td.quizID = 1 
              GROUP 
                 BY td.word
      ) x
   JOIN
      ( SELECT td.word
             , COUNT( t.instance ) wordcount
          FROM ws_words td
          LEFT 
          JOIN ws_missed_words t 
            ON t.wordID = td.wordID 
         WHERE td.quizID = 1 
         GROUP 
            BY td.word
      ) y
     ON y.wordcount < x.wordcount
     OR y.wordcount = x.wordcount
    AND y.word < x.word
  GROUP
     BY x.word;
于 2013-05-03T12:13:58.983 に答える