最佳答案
楼上的解答很赞,你的这个需要应该是需要用到条件查询 case when then else end…
SELECT
pid,
uid,
SUM( score ) AS score,
MAX( created_at ) AS created_at,
SUM( CASE WHEN type = 1 THEN score ELSE 0 END ) AS type1,
SUM( CASE WHEN type = 2 THEN score ELSE 0 END ) AS type2,
SUM( CASE WHEN type = 3 THEN score ELSE 0 END ) AS type3,
SUM( CASE WHEN type = 4 THEN score ELSE 0 END ) AS type4
FROM
demo_x
GROUP BY
uid
亲测有效
讨论数量:
楼上的解答很赞,你的这个需要应该是需要用到条件查询 case when then else end…
SELECT
pid,
uid,
SUM( score ) AS score,
MAX( created_at ) AS created_at,
SUM( CASE WHEN type = 1 THEN score ELSE 0 END ) AS type1,
SUM( CASE WHEN type = 2 THEN score ELSE 0 END ) AS type2,
SUM( CASE WHEN type = 3 THEN score ELSE 0 END ) AS type3,
SUM( CASE WHEN type = 4 THEN score ELSE 0 END ) AS type4
FROM
demo_x
GROUP BY
uid
亲测有效
SELECT
MAX( uid ) uid,
MAX( pid ) pid,
SUM( score ) score,
SUM( CASE WHEN type = 1 THEN score ELSE 0 END ) type1,
SUM( CASE WHEN type = 2 THEN score ELSE 0 END ) type2,
SUM( CASE WHEN type = 3 THEN score ELSE 0 END ) type3,
MAX( created_at ) created_at
FROM
table
GROUP BY
uid
看一下是否符合你的要求。
楼上的解答很赞,你的这个需要应该是需要用到条件查询 case when then else end…
SELECT
pid,
uid,
SUM( score ) AS score,
MAX( created_at ) AS created_at,
SUM( CASE WHEN type = 1 THEN score ELSE 0 END ) AS type1,
SUM( CASE WHEN type = 2 THEN score ELSE 0 END ) AS type2,
SUM( CASE WHEN type = 3 THEN score ELSE 0 END ) AS type3,
SUM( CASE WHEN type = 4 THEN score ELSE 0 END ) AS type4
FROM
demo_x
GROUP BY
uid
亲测有效
推荐文章: