Problema percentuale in query access

mercoledì 25 novembre 2009 - 14.24

AleAssa Profilo | Newbie

Devo creare una query sulla base di una tabella e fin qui tutto semplice e poi, con interrogazione SQL, devo conoscere la percentuale di femmine e di maschi che sono presenti all'interno della tabella.
Io ho provato in questo modo ma non sono riuscita ad ottenere il risultato, qualcuno può aiutarmi?

SELECT count(*)AS Totali, ( select count(Sesso)fromTabella WHERE Sesso="M";)AS TotMaschi, ((TotMaschi(Totali)*100)AS PercentualeMaschi
FROM Tabella;

Brainkiller Profilo | Guru

>Devo creare una query sulla base di una tabella e fin qui tutto
>semplice e poi, con interrogazione SQL, devo conoscere la percentuale
>di femmine e di maschi che sono presenti all'interno della tabella.
>Io ho provato in questo modo ma non sono riuscita ad ottenere
>il risultato, qualcuno può aiutarmi?

Prova così:

SELECT Sum(IIf([Sesso]="M",1,0))/count(*)*100 As Maschi, Sum(IIf([Sesso]="F",1,0))/count(*)*100 As Femmine FROM Table3

Sostituisci tutti i parametri variabili Table3, Sesso, ecc.

Se hai una tabella con

David M
Lorenzo M
Gianna F

avrai come risultato una riga con due colonne

66% 33%

Ciao


David De Giacomi | <empty>
http://blogs.dotnethell.it/david/

AleAssa Profilo | Newbie

Ho provato, escono i numeri ma non la percentuale.

Maschi
60,5839416058394
Femmine
39,4160583941606

Esce questo..

Brainkiller Profilo | Guru

>Maschi
>60,5839416058394
>Femmine
>39,4160583941606

Appunto 60,58% e 39,41% sono le pecentuali.
Cosa vuoi vedere invece tu ?

David De Giacomi | <empty>
http://blogs.dotnethell.it/david/

AleAssa Profilo | Newbie

Oddio scusa, credevo dovesse uscire il segno %
Uso il programma da poco quindi non sono esperta! Ti ringrazio cmq per l'aiuto! Probabilmente scriverò ancora qui, se non mi riusciranno le altri interrogazioni SQL!

Brainkiller Profilo | Guru

>Oddio scusa, credevo dovesse uscire il segno %
>Uso il programma da poco quindi non sono esperta! Ti ringrazio
>cmq per l'aiuto! Probabilmente scriverò ancora qui, se non mi
>riusciranno le altri interrogazioni SQL!

Puoi formattare comunque l'output in questo modo:
SELECT str(round(Sum(IIf([Sesso]="M",1,0))/count(*)*100,1)) + ' %' As Maschi, str(round(Sum(IIf([Sesso]="F",1,0))/count(*)*100,1)) + ' %' As Femmine FROM Table3

Ma non so se ne valga la pena. Trattandosi di operazioni di formattazione dovrebbero essere fatte nella Form o nel Report ma non lì. Se la risposta ti è servita accettala premendo sull'apposito pulsante verde.
Ciao

David De Giacomi | <empty>
http://blogs.dotnethell.it/david/

AleAssa Profilo | Newbie

Ti ringrazio! Adesso mi è uscita anche la percentuale. Volevo solo sapere cosa indica la scritta IIf subito dopo Sum, in modo da capire come funzione e non avere problemi simili a questo.

Brainkiller Profilo | Guru

>Ti ringrazio! Adesso mi è uscita anche la percentuale. Volevo
>solo sapere cosa indica la scritta IIf subito dopo Sum, in modo
>da capire come funzione e non avere problemi simili a questo.

Beh è molto semplice è un IF condizionale. Se la colonna indicata (Sesso) è = M mette un 1, se no 0. Poi facendo la Sum (somma) di tutta questa roba, conteggia praticamente quanti maschi e quante femmine ci sono in tabella.
Poi con una semplice proporzione maschi diviso totale (maschi/count(*)) ottieni la percentuale moltiplicata poi per 100, e arrotondata al decimale.


David De Giacomi | <empty>
http://blogs.dotnethell.it/david/
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5