Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Count the occurrences of a given list of values in a column using a single SQL query

Tags:

sql

pivot

I would like to get the count of occurrences of a given list of values in a column using a single SQL query. The operations must be optimised for performance.

Please refer the example given below,

Sample Table name - history

code_list
5lysgj
627czl
1lqnd8
627czl
dtrtvp
627czl
esdop9
esdop9
3by104
1lqnd8

Expected Output

Need to get the count of occurrences for these given list of codes 627czl, 1lqnd8, esdop9, aol4m6 in the format given below.

code count
627czl 3
esdop9 2
1lqnd8 2
aol4m6 0

Method I tried in show below but the count of each input is shown as a new column using this query,

SELECT 
    sum(case when h.code_list = 'esdop9' then 1 else 0 end) AS count_esdop9,
    sum(case when h.code_list = '627czl' then 1 else 0 end) AS count_627czl,
    sum(case when h.code_list = '1lqnd8' then 1 else 0 end) AS count_1lqnd8,
    sum(case when h.code_list = 'aol4m6' then 1 else 0 end) AS count_aol4m6
FROM history h;

Note - The number inputs need to be given in the query in 10 also the real table has millions of records.

like image 862
flawed_earthling Avatar asked Jan 29 '26 17:01

flawed_earthling


1 Answers

If i properly understand you need to get the count of occurrences for the following codes: 627czl, 1lqnd8, esdop9.

In this case you can try this one:

SELECT code_list, count(*) as count_
  FROM history
 WHERE code_list in ('627czl','1lqnd8','esdop9')
 GROUP BY code_list
 ORDER BY count_ DESC;

dbfiddle

If you need to get the count of occurrences for all codes you can run the following query:

SELECT code_list, count(*) as count_
  FROM history
 GROUP BY code_list
 ORDER BY count_ DESC;
like image 116
HRK Avatar answered Feb 01 '26 07:02

HRK



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!