2009-06-18 6 views
0

employés e_id premier dernier 1 John Smith 2 Bob Smith 3 Alex Smith 4 John Doe 5 Ron Doerequête MySQL Un peu complexes

clockpunch 
e_id time for adjustment 
1 0650 in early 
3 0710 in late 
4 0725 in early 
1 1100 lunch --- 
2 1150 in late 
2 1400 lunch --- 
4 1320 out --- 

je besoin d'une seule requête qui liste tous les noms des employés , avec un décompte du nombre de fois que cet utilisateur a été en avance, en ordre décroissant par le nombre de fois en avance. Comment cela serait-il fait?

Répondre

0
select a.first,a.last,sum(case b.adjustment when 'early' then 1 else 0 end) as ct 
from employees a, clockpunch b where a.e_id=b.e_id 
    group by a.first, a.last 
0

Cela pourrait fonctionner (non testé)

select first,last,count(*) from employees e, clockpunch c 
where e.e_id = c.e_id and adjustment = 'early' 
group by first,last 
order by count(*) desc