2017-03-19 23 views
2
Language Date 
---------------------- 
HTML  2017-03-15 
HTML  2017-03-15 
HTML  2017-03-19 
JavaScript 2017-03-12 
JavaScript 2017-03-17 
PHP   2017-03-15 
PHP   2017-03-17 
PHP   2017-03-18 
PHP   2017-03-18 

Iは、最新の日付のエントリから2列目の各言語の列のCOUNT()languageによってグループ化された結果を必要とします。すべての言語に同じ日付のエントリがあるわけではありません。上記の表についてはSQL `GROUP BY`と` MAX() `

、結果は次のようになります。

select language, count(*) 
from t 
where t.date = (select max(t2.date) 
       from t t2 
       where t2.language = t.language 
       ) 
group by language; 

これは、各言語の最新の日付と一致して行き相関サブクエリを使用しています。

HTML  1 
JavaScript 1 
PHP   2 
+0

私はカウント部分を取得しません。あなたが1/1/2に投稿した内容は、各言語行を反映していません。特定の日付を意味しますか? html/js 1とPHP 2はなぜですか? –

+0

私は各言語のカウントを返すようにしていますが、言語の最新の入力日付のそれぞれの項目のみを返します。 – atb

+0

正しく理解しているかどうかを確認してください:最新の日付からUNIQUEの日付をカウントに反映させます? –

答えて

3

ここに1つの方法です。 join

などの方法があります。
select language, count(*) 
from t 
where (t.language, t.date) in (select t2.language, max(t2.date) 
           from t t2 
           group by t2.language 
          ) 
group by language; 
+0

両方のソリューションは、OPが望むように動作しません。 –

+0

おっと、私はグループバイを外しました。 @AzizSaleh。 。 。 'group by 'が欠けていると言うだけで十分だろう。 –

+0

私は気付かなかった、私はちょうどSQLのフィドルでクエリを実行した。私の次のステップは、クエリをデバッグすることでしたが、事前に修正しました。両方とも、私が走ったテストから期待どおりに働いています。フィドルリンク@ http://sqlfiddle.com/#!9/1e823e/12/0 –