Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL使用多个group by计数列_Mysql_Sql_Group By_Count - Fatal编程技术网

MySQL使用多个group by计数列

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

我有一个带有翻译的数据库表。有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, 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