Home > Back-end >  SQL Query count of values
SQL Query count of values

Time:09-02

I'm trying to write a query that will show the number of times some specific values are present per node

Here is my table:

Host_Name   Node_Name   Channel_Width
-------------------------------------
Host_1       AAA         32
Host_1       AAA         64
Host_1       AAA         64
Host_1       AAA         64
Host_1       AAA         64
Host_1       AAB         32
Host_1       AAB         32
Host_1       AAB         64
Host_1       AAB         64
Host_1       AAB         96
Host_2       AAC         32
Host_2       AAC         64
Host_2       AAC         64
Host_2       AAC         64
Host_2       AAC         64
Host_2       AAC         64
Host_2.      AAD         64
Host_2       AAD         64
Host_2       AAD         64

I'm trying to query the count of nodes for the number of times the values in channel_width show up. For instance, the amount of nodes '32' show up once and '64' shows up 3 times, the amount of nodes '64' shows up all 4 times but '32' never shows up, etc. Ultimately, I'm trying to get the count of nodes for each circumstance per host_name. If the value doesn't show up, I don't want it counted as part of the count.

This is what I tried but its showing the count the same across the board which isn't right...

SELECT host_name,
       node_name,
       COUNT(channel_width = '32') AS 3_MHz,
       COUNT(channel_width = '64') AS 6_MHz,
       COUNT(channel_width='96') AS SOFA,
FROM table_name
GROUP BY host_name, node_name

Thanks!

EDIT: expected results:

Host_Name| Node_Name | 3 MHz | 6 MHz | SOFA
--------- ----------- ------- ------- ------
Host_1   | AAA       | 1     | 4     | 0
Host_1   | AAB       | 2     | 2     | 1

CodePudding user response:

Please try this out

SELECT host_name,
       node_name,
       count(CASE WHEN channel_width = '32' THEN 1 END) AS 3_MHz,
       count(CASE WHEN channel_width = '64' THEN 1 END) AS 6_MHz,
       count(CASE WHEN channel_width = '96' THEN 1 END) AS SOFA
FROM details
group by host_name, node_name

Check the db fiddle here

  •  Tags:  
  • sql
  • Related