Group By Except For Certain Value

后端 未结 4 985
清歌不尽
清歌不尽 2021-01-17 16:18

I\'m trying to create a (sqlite) query that will perform a GROUP BY but will not group anything with the value \'unknown\'. For example, I have the table:

i         


        
4条回答
  •  温柔的废话
    2021-01-17 16:49

    As a single query...

    SELECT
      MIN(id)            AS id,
      name,
      parent_id,
      school_id
    FROM
      yourTable
    GROUP BY
      CASE WHEN name = 'unknown' THEN id ELSE 0 END,
      name,
      parent_id,
      school_id
    

    Or possibly...

    GROUP BY
      CASE WHEN name <> 'unknown' THEN name ELSE CAST(id AS VARCHAR(???)) END,
      parent_id,
      school_id
    
    -- Where VARCHAR(???) is the data type of the `name` field.
    -- Also assumes no value in `name` is the same as an id for an 'unknown' field
    

    Both avoid UNION and the overhead of parsing the table twice, replacing it with a slightly increased complexity GROUP BY.

提交回复
热议问题