Προς το περιεχόμενο

Sql query


marjel

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπέρα ,

 

έχω ένα table στην SQL με διάφορα δεδομένα..

 

θέλω να τρέξω ένα query τύπου

 

SELECT Sex, Occupation, COUNT(*)AS 'Total'

FROM mytable

GROUP BY Sex, Occupation

 

τα αποτελέσματα είναι

 

Sex Occupation Total

M tempelis 21

M remali 26

M groupieris 11

F tempelis 13

F remali 13

F groupieris 10

 

τι ακριβώς πρέπει να κάνω για να έχω τα αποτελέσματα σε τέτοια μορφή

 

Gender tempelis remali groupieris

M 21 26 11

F 13 13 10

 

 

 

Ευχαριστώ εκ των προτέρων

Δημοσ.

απο το αποτελεσμά σου το τελικο όπως το δίνεις

 

>Sex Occupation Total
M tempelis      21
M remali        26
M groupieris	11
F tempelis	13
F remali 13
F groupieris	10

 

Oracle

 

> SELECT sex,
         sum(decode(occupation,'tempelis',Total)) tempelis,
         sum(decode(occupation,'remali',Total)) remali,
         sum(decode(occupation,'groupieris',Total)) groupieris         
    FROM mytable
   GROUP BY sex

 

αντίστοιχα με case για άλλη βάση

 

> SELECT sex,
         sum(case when occupation='tempelis' then Total end) tempelis,
         sum(case when occupation='remali' then Total end) remali,
         sum(case when occupation='groupieris' then Total end) groupieris         
    FROM mytable
   GROUP BY sex

 

 

Δεν τα έχω τεστάρει.

 

Μπορείς να το κάνεις και στον αρχικό πίνακα και όχι στο πρώτο αποτέλεσμα ως εξής

 

> SELECT sex,
         sum(case when occupation='tempelis' then 1 else 0 end) tempelis,
         sum(case when occupation='remali' then 1 else 0  end) remali,
         sum(case when occupation='groupieris' then 1 else 0 end) groupieris         
    FROM mytable
   GROUP BY sex

 

 

Πρέπει να ξέρεις σε οποιαδήποτε περίπτωση όλα τα occupations . Αν σου είναι δυσκολο άλλαξε και βάλε πάνω το sex και κάθετα το occupation .

Δημοσ.

>
SELECT sex,
         sum(decode(occupation,'tempelis',Total)) tempelis,
         sum(decode(occupation,'remali',Total)) remali,
         sum(decode(occupation,'groupieris',Total)) groupieris         
    FROM mytable
   GROUP BY sex

 

αυτό Δούλεψε κανονικά

 

Χίλια ευχαριστώ για τον χρόνο σου ......

Δημοσ.

Να σαι καλα :-) Πάντως το πιο σωστό είναι το ακόλουθο εφόσον είσαι σε oracle για τον αρχικο πίνακα χωρίς ενδιάμεσα αποτελέσματα.

 

> SELECT sex,
         sum(decode(occupation,'tempelis',1,0)) tempelis,
         sum(decode(occupation,'remali',1,0)) remali,
         sum(decode(occupation,'groupieris',1,0)) groupieris         
    FROM mytable
   GROUP BY sex

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...