2017-10-15 4 views
0

これはおそらく私が紛失している単純なものだと確信していますが、各項目の出現回数をカウントするMySQLクエリを実行しようとしています。行全体を持つ結果をcountで整列した結果を返します。MySqlをカウントで取得しようとしていますが、それぞれ1つしか取得していません

例えば、私はこれらのエントリを持つ行を持っている:

Agriculture 
Energy 
Energy 
Environment 
Agriculture 
Mining 
Energy 

は、私は私のクエリは私に戻りたい:

Energy 
Energy 
Energy 
Agriculture 
Agriculture 
Environment 
Mining 

私はこのしようとしている:

SELECT `companyname`, `id`, `location`,`industry`, COUNT(`industry`) AS `industry_occurrence` 
FROM atl3_atl_testimonials 
WHERE state ='1' 
ORDER BY industry_occurrence 

しかし、すべての結果ではなく、最初の「エネルギー」結果のみがオカレンスで順序付けされて返されます。私は何を変えるべきですか?

+0

「industry_occurence」列は必須ですか?私は 'count'が' group by'を暗黙的に実行していると考えます。 –

+0

どのようにグループなしでカウントを使用していますか? Uはエラーに当たっていませんでしたか? – Valli

+1

@Valliこれに関してMySQLはエラーを生成しません。適切なグループ化なしにすべての集約を使用できます。間違っている(ほとんどの場合)が、エラーはありません。特に、グループ化されていない列は、期待値以外の値を返します。 – dognose

答えて

0

こちらのような方にお尋ねください。

SELECT `companyname`, `id`, `location`, 
     a.industry, cnt AS `industry_occurrence` 
    FROM atl3_atl_testimonials a, 
     (SELECT COUNT(`industry`) cnt, `industry` 
      FROM atl3_atl_testimonials 
     Group by industry) f 
    WHERE state ='1' 
    AND f.industry = a.industry 
ORDER BY cnt desc 
関連する問題