如何避免sum的重复(case when..then 1 else 0 end)?

iklwldmw  于 2021-08-01  发布在  Java
关注(0)|答案(1)|浏览(562)

我有以下疑问:

  1. SELECT col.myId,
  2. SUM( CASE WHEN tu.userId IS NOT NULL THEN 1 ELSE 0 END) AS uCount,
  3. SUM( CASE WHEN g.grouptype != 12 THEN 1 ELSE 0 END) AS gCount
  4. FROM myUserTable col
  5. LEFT JOIN fooTable elem ON col.myId = elem.myId
  6. LEFT JOIN barTable esc ON elem.anotherId = esc.anotherId
  7. LEFT JOIN userTable tu ON esc.anotherId = tu.anotherId
  8. LEFT JOIN grouTable g ON g.groupid = tu.groupid
  9. GROUP BY col.myId

这里的问题 userId 数到两次。我想避免它。
我怎样才能做到呢?

uqdfh47h

uqdfh47h1#

也许你想要 COUNT(DISTINCT) ?

  1. COUNT(DISTINCT tu.userId) AS uCount,

相关问题