MySQL使用多个group by计数列
我有一个带有翻译的数据库表。有ID、word、translation、source\u language、target\u language列。我想知道每个词有多少翻译成另一种语言 我使用了这个查询:MySQL使用多个group by计数列,mysql,sql,group-by,count,Mysql,Sql,Group By,Count,我有一个带有翻译的数据库表。有ID、word、translation、source\u language、target\u language列。我想知道每个词有多少翻译成另一种语言 我使用了这个查询: SELECT word, count(translation) as number, source_language, target_language FROM word_translations WHERE source_language = 'deu' GROUP BY word, tar
SELECT word, count(translation) as number, source_language, target_language
FROM word_translations
WHERE source_language = 'deu'
GROUP BY word, target_language
结果对我来说似乎很奇怪,然而,当我看每种语言的翻译总数时,它毫无意义。一个单词可以有不同数量的翻译成多种语言,所以我想我不能使用逐词分组
样本数据:
- 汽车-汽车-发动机-德国
- car-pkw-eng-deu
- 汽车-voiture-eng-fra
- car-vagon-eng-fra
- 汽车-汽车-发动机-fra
- 汽车-科切-工程-水疗中心
- car-deu-2
- 汽车-fra-3
- 汽车-水疗-1
SELECT word, count(*) as number_translations,
count(distinct target_language) as num_languages
FROM word_translations
WHERE source_language = 'deu'
GROUP BY word, source_language;
您的查询统计每个目标语言的翻译数量。您的
WHERE
子句错误。它应该是:
WHERE source\u language='eng'
SELECT word, count(translation) as number, source_language, target_language
FROM word_translations
WHERE source_language = 'eng'
GROUP BY word, target_language
请参阅。结果: 如果要计算所有源语言的每个单词有多少翻译,则还必须
按源语言分组
,并删除WHERE
子句:
SELECT word, count(translation) as number, source_language, target_language
FROM word_translations
GROUP BY word, source_language, target_language
您的代码看起来不错,但我不明白您的意思:结果对meSorry来说似乎很奇怪,我已经添加了示例数据和预期结果,我希望这对您有所帮助understand@keschra . . . 您的示例都有一个源语言“eng”,但您的同事有“deu”。翻译按单词和目标语言计算是很重要的。例如,单词“car”可以有5个德语、2个法语和10个不同的俄语翻译。这只是一个例子,我不想计算多种语言的翻译,抱歉。但看起来结果是对的。我需要找出为什么它们与每种语言的翻译总数不相关。如果要计算多种语言的翻译总数,那么代码必须不同。这是你想要的吗?
SELECT word, count(translation) as number, source_language, target_language
FROM word_translations
GROUP BY word, source_language, target_language