mysql - SQL `GROUP BY` 和 `MAX()`

标签 mysql group-by subquery

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

我需要一个按语言分组的结果,第二列是最新日期条目中每个语言行的COUNT()。并非所有语言都有相同日期的条目。

对于上表,结果应为:

HTML        1
JavaScript  1
PHP         2

最佳答案

这是一种方法:

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

这使用相关子查询来匹配每种语言的最近日期。还有其他方法,例如使用 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;

关于mysql - SQL `GROUP BY` 和 `MAX()`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42889507/

相关文章:

mysql - pdo 语句的返回查询

mysql - 使用条件 mysql 获取最大 COUNT(DISTINCT)

r - 在R中分组后选择聚合列的第n个值

python - 使用新数据更新 Pandas 数据框,同时保留现有 ID 号

java - 从另外两个查询中提出一个查询?

sql - 'value'关键字在Oracle Select语句中的作用

mysql - 从 SQL 表中的列中检索特定字符串

php - 编辑产品 - 更改图像

python - Pandas percentrank 基于每个索引中的组

mysql - 我如何将此查询转换为使用子查询的查询?