SQL在列中选择聚合值

str*_*oir 3 sql select

我很好奇,这个结果集是否可以用sql查询实现?

这是表格

item_id    name       availability
-----------------------------------
1          brush      available
2          brush      available
3          paint      not available
4          paint      available
Run Code Online (Sandbox Code Playgroud)

这是结果

name         available    not available
---------------------------------------
brush        2            0
paint        1            1
Run Code Online (Sandbox Code Playgroud)

查询可能是什么样的?

Qua*_*noi 9

SELECT  name,
        COALESCE(SUM(CASE WHEN availability = 'available' THEN 1 ELSE 0 END), 0) AS available,
        COALESCE(SUM(CASE WHEN availability = 'available' THEN 0 ELSE 1 END), 0) AS not_available
FROM    mytable
GROUP BY
        name
Run Code Online (Sandbox Code Playgroud)