Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

SQL Select aggregate values in column

Tags:

sql

select

I'm curious, is this result set can be achieved with sql query?

Here is the table

item_id    name       availability
-----------------------------------
1          brush      available
2          brush      available
3          paint      not available
4          paint      available

here is the result

name         available    not available
---------------------------------------
brush        2            0
paint        1            1

what could the query look like?

like image 885
strike_noir Avatar asked Sep 11 '26 04:09

strike_noir


1 Answers

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
like image 137
Quassnoi Avatar answered Sep 12 '26 17:09

Quassnoi