Skip to content
Advertisement

Complex mysql query counting

I have 1 table name “companies” with several datas like :

Id Owner Company Job
1 John Doe Company 1 CEO
1 John Doe Company 2 CEO
1 John Doe Company 3 CEO
1 Gab Durand Company 4 CEO
1 Rob Dujn Company 5 CTO
1 Alex DoeMorse Company 6 COO

What I need is to get 1 line by company with a row calculating the number of company own by each person.

This is my desired output :

Id Owner Company Job Count
1 John Doe Company 1 CEO 3
1 John Doe Company 2 CEO 3
1 John Doe Company 3 CEO 3
1 Gab Durand Company 4 CEO 1
1 Rob Dujn Company 5 CTO 1
1 Alex DoeMorse Company 6 COO 1

What could be the mysql query?

EDIT : DB version 5.6.51

Thanks!

Advertisement

Answer

You can add an extra column containing analytic function such as

COUNT(*) OVER (PARTITION BY Id, owner) AS count

if DB version is 8.0

As having a former DB version, prefer using correlated subquery such as

SELECT Id, Owner, company, Job,
       (SELECT COUNT(*) 
          FROM t 
         WHERE id = tt.id 
           AND Owner = tt.Owner ) AS count
  FROM t AS tt

Demo

User contributions licensed under: CC BY-SA
5 People found this is helpful
Advertisement