2017-12-29 22 views
0

ich eine SQL-Abfrage haben, dass die Art, wie ich es möchte funktioniert, wie ich es brauchen, die Informationen zu ziehen, aber ich meine Abteilung Spalte nichtWie nur eine Spalte zu ziehen, aber beide Spalten Informationen benötigen

wollen

Beispiel

qry = """ 
select distinct 
    Department 
    , (select count(*) from MyTable t2 where t2.Department = t1.Department and t2.CompletedTraining='Incomplete') as Total 
from MyTable t1 ORDER BY Department ASC 

df = pd.read_sql_query(qry, con) 
print("Incomplete Training") 
print(df) 

Stromausgang:

Incomplete Training 
    Department Total 
0  AQPSD  6 
1   ASD  8 
2   CO  2 
3  ECARS  3 
4   ED  6 
5   EO  4 
6   ISD  4 
7   MLD  0 
8  MSCD  5 
9   OIS  0 
10   RD  2 
11  TTD  4 

ich meine Abfrage nur möchte setzen Gesamt Spalte setzen, aber immer noch die gleichen Daten, so würde ausgegeben werden

Incomplete 
    Training 
0   6 
1   8 
2   2 
3   3 
4   6 
5   4 
6   4 
7   0 
8   5 
9   0 
10  2 
11  4 

Antwort

1

Im Allgemeinen Sie eine Spalte durch Umwickeln eine weitere Abfrage um es entfernen:

SELECT Total 
FROM (SELECT ...original query...); 

Aber in diesem Fall, wenn Sie mit GROUP BY DISTINCT ersetzen, brauchen Sie nicht die ursprüngliche Spalte in der Abfrageausgabe (und die Unterabfrage kann unter Verwendung der Tatsache vereinfacht werden, daß in SQLite, ein booleschen Ausdruck oder Ergebnisse in 01):

SELECT sum(CompletedTraining = 'Incomplete') AS Total 
FROM MyTable AS t1 
GROUP BY Department 
ORDER BY Department ASC; 
Verwandte Themen