带计数/分组的mySQL查询

带计数/分组的mySQL查询,mysql,sql,Mysql,Sql,我有以下数据: ID user value lang ------------------------------ 1 1 foo1 de 2 1 foo2 de 3 1 bar1 en 4 1 bar2 en 5 1 bar3 en 6 1 bar4 fr 期望输出: user de en f

我有以下数据:

ID   user    value     lang
------------------------------
1    1       foo1      de
2    1       foo2      de
3    1       bar1      en
4    1       bar2      en
5    1       bar3      en
6    1       bar4      fr
期望输出:

user   de    en    fr 
------------------------------
1      2     3     1
我想从用户1获取所有语言的总数


我试过使用
COUNT
SUM
HAVING
。。但它不起作用。

您可以使用条件聚合

SELECT user,
       SUM(CASE WHEN lang='de' THEN 1 ELSE 0 END) as 'de',
       SUM(CASE WHEN lang='en' THEN 1 ELSE 0 END) as 'en',
       SUM(CASE WHEN lang='fr' THEN 1 ELSE 0 END) as 'fr'
  FROM t
 GROUP BY user
或直接无条件:

SELECT user,
       SUM(lang='de') as 'de',
       SUM(lang='en') as 'en',
       SUM(lang='fr') as 'fr'
  FROM t
 GROUP BY user

您可以使用条件聚合

SELECT user,
       SUM(CASE WHEN lang='de' THEN 1 ELSE 0 END) as 'de',
       SUM(CASE WHEN lang='en' THEN 1 ELSE 0 END) as 'en',
       SUM(CASE WHEN lang='fr' THEN 1 ELSE 0 END) as 'fr'
  FROM t
 GROUP BY user
或直接无条件:

SELECT user,
       SUM(lang='de') as 'de',
       SUM(lang='en') as 'en',
       SUM(lang='fr') as 'fr'
  FROM t
 GROUP BY user

您可以添加您尝试过的内容吗?您是否按分组?是否可以添加您尝试过的内容?您是否按分组?