2017-03-10 2 views
-1

ich brauche die Gesamtmenge der Ergebnisse für jede Person zu bekommen, aber ich bekomme ...Wie erhält man die Gesamtmenge der Ergebnisse mit count (*)?

resultado

MY QUERY ..

 
select t.fecha_hora_timbre,e.nombre,e.apellido,d.descripcion as departamento_trabaja, t.fecha,count(*) 
from fulltime.timbre t, fulltime.empleado e, fulltime.departamento d 
where d.depa_id=e.depa_id and t.codigo_empleado=e.codigo_empleado and 
      trunc(t.fecha) between trunc(to_date('15/02/2017','dd/mm/yyyy')) and trunc(to_date('14/03/2017','dd/mm/yyyy')) 

group by t.fecha_hora_timbre,e.nombre,e.apellido,d.descripcion, t.fecha 

Erwartete Daten ...

 
NOMBRE   | APELLIDO  | DEPARTAMENTO_TRABAJA | VECES_MARCADAS(count) 
MARIA TARCILA  IGLESIAS BECERRA   ALCALDIA    4 
KATHERINE TATIANA SEGOVIA FERNANDEZ  ALCALDIA    10 
FREDDY AGUSTIN VALDIVIESO VALLEJO  ALCALDIA    3 

UPDATE ..

select e.nombre,e.apellido,d.descripcion as departamento_trabaja,COUNT(*) 
from fulltime.timbre t, fulltime.empleado e, fulltime.departamento d 
where d.depa_id=e.depa_id and t.codigo_empleado=e.codigo_empleado and 
      trunc(t.fecha) between trunc(to_date('15/02/2017','dd/mm/yyyy')) and trunc(to_date('14/03/2017','dd/mm/yyyy')) 

group by t.fecha_hora_timbre,e.nombre,e.apellido,d.descripcion, t.fecha 
+0

Sie wählen (und gruppieren nach) viele Spalten; Sie sehen die Anzahl für jede einzelne Kombination von all diesen. Willst du weniger Spalten sehen - ohne die 'fecha_hora_timbre' und' fecha' wahrscheinlich - mit der Zählung für die restlichen Spalten; Oder möchten Sie alle diese Spalten behalten und die Gesamtzahl für jede Person angeben? also werden alle drei Zeilen für 'Maria Tarcila' angezeigt, aber jeder hat eine Zählung von '3' angehängt? –

+0

Wenn Sie [Ihre Ausgabe als Text anzeigen] (https://meta.stackoverflow.com/questions/285551/why-may-i-not-upload-images-of-code-on-so-when-asking-a (Frage/285557 # 285557) und einschließlich Ihrer erwarteten Ergebnisse haben wir eine bessere Idee, was Sie eigentlich erreichen möchten. –

+0

HALLO !!! @Alex Poole danke !! Nun, ich muss die Gesamtmenge für jede Person zum Beispiel behalten: [Beispiel] (http://i.imgur.com/dND6MuI.png) –

Antwort

0

Sie sollten nur die nicht aggregierten Spalten auswählen und gruppieren, für die Sie tatsächlich zählen möchten. Im Moment fügen Sie die Spalten fecha_hora_timbre und fecha in jeder Zeile ein. Sie zählen also die eindeutigen Kombinationen dieser Spalten sowie die Namen/Abteilungsinformationen, die Sie tatsächlich zählen möchten.

select e.nombre, e.apellido, d.descripcion as departamento_trabaja, 
    count(*) a veces_marcadas 
from fulltime.timbre t 
join fulltime.empleado e on t.codigo_empleado=e.codigo_empleado 
join fulltime.departamento d on d.depa_id=e.depa_id 
where t.fecha >= to_date('15/02/2017','dd/mm/yyyy') 
and t.fecha < to_date('15/03/2017','dd/mm/yyyy') 
group by e.nombre, e.apellido, d.descripcion 

Ich habe die zusätzlichen Spalten entfernt. Beachten Sie, dass sie sowohl von der Auswahlliste als auch von der Group-By-Klausel entfernt wurden. Wenn Sie eine nicht aggregierte Spalte in der Auswahlliste haben, die nicht in der Gruppe enthalten ist, erhalten Sie einen ORA-00937-Fehler. Aber wenn Sie eine Spalte in der Gruppe haben, die nicht in der Auswahlliste enthalten ist, wird sie trotzdem gruppiert, obwohl Sie sie nicht sehen können und Sie einfach nicht die erwarteten Ergebnisse erhalten.

Ich habe auch von Joinsyntax im alten Stil zu moderner Syntax geändert. Und ich habe den Datumsvergleich geändert; Erstens, weil trunc() als Teil von trunc(to_date('15/02/2017','dd/mm/yyyy')) ist sinnlos - Sie wissen bereits, die Zeit Teil ist Mitternacht, so dass die Trunc nichts erreicht. Aber meistens, so dass, wenn es einen Index auf fecha gibt, dieser Index verwendet werden kann. Wenn Sie trunc(f.techa) tun, dann muss der Wert jedes Spaltenwerts abgeschnitten werden, wodurch der verwendete Index gestoppt wird (es sei denn, Sie haben einen funktionsbasierten Index). Als between inklusiv, unter Verwendung von >= und < mit einem Tag später sollte die höhere Grenze den gleichen Effekt insgesamt haben.

+0

danke @Alex Poole !! –

Verwandte Themen