Περίληψη ερωτήματος από διάφορους τομείς στην SQL

ψήφοι
1

Πίνακα δεδομένων δομή είναι:
id1, id2, ID3, ID4, ... (κάποια άλλα πεδία).
Θέλω να δημιουργήσω περίληψη ερώτημα για να μάθετε πόσες φορές χρησιμοποιείται κάποια αξία ID σε κάθε στήλη.

Τα δεδομένα
1,2,3,4,2008
2,3,5,1,2008
1,3,2,5,2007
1,2,3,6,2007
3,1,2,5,2007

Για τιμή 1, το αποτέλεσμα θα πρέπει να είναι
1,0,0,1,2008
2,1,0,0,2007

Πώς να το πετύχουν αυτό με ένα ερώτημα (σε MySQL).

Δημοσιεύθηκε 09/12/2008 στις 20:32
πηγή χρήστη
Σε άλλες γλώσσες...                            


4 απαντήσεις

ψήφοι
1

Αυτή φαίνεται να είναι η καλύτερη λύση (από το Wiki ):

select years,
sum(1*(1-abs(sign(id1-56)))) as id1,
sum(1*(1-abs(sign(id2-56)))) as id2,
sum(1*(1-abs(sign(id3-56)))) as id3,
sum(1*(1-abs(sign(id4-56)))) as id4,
from mytable
group by years
Απαντήθηκε 09/12/2008 στις 21:22
πηγή χρήστη

ψήφοι
1

Χρησιμοποιήστε ένα χαρακτηριστικό ή δέλτα λειτουργία:

DECLARE @look_for AS int
SET @look_for = 1

SELECT SUM(CASE WHEN id1 = @look_for THEN 1 ELSE 0 END) AS id1_count
    ,SUM(CASE WHEN id2 = @look_for THEN 1 ELSE 0 END) AS id2_count
    ,SUM(CASE WHEN id3 = @look_for THEN 1 ELSE 0 END) AS id3_count
    ,SUM(CASE WHEN id4 = @look_for THEN 1 ELSE 0 END) AS id4_count
FROM tbl

Υπάρχουν τρόποι για να κωδικοποιήσει τη δημιουργία αυτής της (επίσης μια τεχνική που χρησιμοποιούν άξονα και UNPIVOT του SQL Server που δεν είναι ANSI) με βάση το τραπέζι σας και τις διαφορετικές αξίες ID επίσης.

Απαντήθηκε 09/12/2008 στις 20:43
πηγή χρήστη

ψήφοι
0

επιλέγω

(Επιλέξτε count (ID1) από t1 όπου ID1 = @param) ως ID1,

(Επιλέξτε count (ID2) από t2 όπου ID2 = @param) ως ID2

Απαντήθηκε 09/12/2008 στις 20:47
πηγή χρήστη

ψήφοι
-1

εάν το Χ είναι η τιμή id που ψάχνετε, θα το κάνω κάτι σαν αυτό.

select (select count(*) where id1 = X) as countid1 ... etc
Απαντήθηκε 09/12/2008 στις 20:43
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more