Forum

Forum (https://www.ms-office.gr/forum/)
-   Access - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/)
-   -   Η συνάρτηση count σε sql στην Access 2007 (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/836-h-synartisi-count-se-sql-stin-access-2007-a.html)

DimitrisMax 15-11-10 09:05

Η συνάρτηση count σε sql στην Access 2007
 
Καλημέρα παιδιά...

θα ήθελα αν μπορούσε κάποιος να δώσει μια λύση στο πρόβλημα μου.
Το πρόβλημα μου έχει ως εξής:
θέλω σε μια αναφορά (ερώτημα που βασίζεται σε αναφορά) να χρησιμοποιήσω τη συναρτήση count 3 φορές στο ίδιο πεδίο αλλά... με διαφορετικό κριτήριο σε κάθε count και βάση της συνθήκης να "γκρούπαρει" ανά μήνα π.χ.
Μήνας Ρεπό Άδεια Διανυκτέρευση
10 1 2 3
11 0 3 4

όπου Ρεπό ,΄΄Αδεια ,Διανυκτέρευση είναι αντίστοιχα οι συναρτήσεις count.
Δοκίμασα τη DCount αλλά επιστρέφει αθροιστικά π.χ.
Μήνας Ρεπό Άδεια Διανυκτέρευση
10 1 5 7
11 1 5 7

καμμία ιδέα?Γιατί σε ενα ερώτημα δε παίζουν οι 3 count.
Ευχαριστώ πολύ εκ των προτέρων!

kapetang 15-11-10 15:46

1 Συνημμένο(α)
Καλησπέρα στην παρέα

Δημήτρη, εκείνο που χρειάζεσαι, αν κατάλαβα καλά, είναι ένα ερώτημα διασταύρωσης στο οποίο θα βασίσεις την έκθεση.
Στην προβολή φύλλου δεομένων του ερωτήματος ως τίτλο γραμμής θα έχουμε την ταυτότητα του ατόμου (εργαζόμενου) και το μήνα και ως τίτλους στηλών την αιτία απουσίας (άδεια, ρεπό, διανυκτέρευση).
Η βάση δεδομένων που επισυνάπτεται είναι ένα παράδειγμα το οποίο μπορείς να χρησιμοποιήσεις για να κάνεις κάτι ανάλογο με τα δικά σου δεδομένα.
Αποτελείται από ένα πίνακα με τα στοιχεία απουσίας των εργαζόμενων (tblApusies), ένα ερώτημα διασταύρωσης (qryApusies) και μία έκθεση (rptApusies).
Για να δημιουργήσεις ερώτημα διασταύρωσης μπορείς να χρησιμοποιήσεις τον οδηγό που διαθέτει η access (Κορδέλα > Δημιουργία > Ομάδα άλλο > Οδηγός ερωτημάτων > Οδηγός ερωτημάτων διασταύρωσης) και να τροποποιήσεις λίγο το αποτέλεσμα.
Παρακάτω δίνεται και η πρόταση SQL του ερωτήματος διασταύρωσης.
Κώδικας:

TRANSFORM Count(tblApusies.fldID) AS ΠλήθοςΤουfldID
SELECT tblApusies.AtomoID, Month([DateApusias]) AS Μήνας, Count(tblApusies.fldID) AS ΣύνολοΑπουσιών
FROM tblApusies
GROUP BY tblApusies.AtomoID, Month([DateApusias])
PIVOT tblApusies.LogosApusias;

Φιλικά/Γιώργος

ΜΑΡΙΑ ΜΑΡΙΑ 29-11-10 15:04

ΕΠΕΙΓΟΝ
Καλησπέρα,
Χρειάζομαι την βοήθειά σας.
Εχω 3 στήλες σε ένα query . η μία είναι το όνομα του πωλητή, η δεύτερη είναι το όνομα της εταιρείας και η τρίτη στήλη λέει το αποτέλεσμα δηλαδή αν κέρδισε , έχασε ή περιμένει την δουλειά. Θέλω να βγάλω το εξής και δεν ξέρω πως: ανα πωλητή το ποσοστό επιτυχίας δουλειών σε ποσοστό δηλαδή κερδισμένες δουλειές / τις εταιρείες που έχει επισκευθεί και δεν ξέρω πως να το κάνω αφου περιέχουν μόνο λέξεις τα κελιά μου.

Σας ευχαριστώ

nisgia 29-11-10 16:45

1 Συνημμένο(α)
Καλησπέρα Μαρία και καλωσόρισες στο φόρουμ!

Δεν παίζουν ρόλο οι τύποι δεδομένων στα ερωτήματα συνόλων όταν πρόκειται για καταμέτρηση.
Όμως με ένα ερώτημα δεν θα καταφέρεις το ζητούμενο. Θα χρειαστείς τουλάχιστον 3.
Ένα για τις επιτυχίες, ένα για τις αποτυχίες και ένα για τα ποσοστά επιτυχίας.

Δες λοιπόν στο συνημμένο πως γίνεται.
Τα ποσοστά επιτυχίας φαίνονται στο ερώτημα "qrySuccessRates".
Το ερώτημα "qrySuccesses" επιστρέφει τις επιτυχίες ενώ το "qryLostJobs" τις αποτυχίες.

Ελπίζω να βοηθάω...:unsure:

Φιλικά, Γιάννης.

kapetang 29-11-10 18:53

1 Συνημμένο(α)
Καλησπέρα στην παρέα

Μαρία καλωσόρισες.
Στο δείγμα βάσης δεδομένων που επισυνάπτεται παρουσιάζεται μια άλλη προσέγγιση με χρήση ερωτήματος διασταύρωσης.
  1. Η βάση αποτελείται από ένα απλό πίνακα «tblPolisis» με πεδία «Politis», «Pelatis» και «Apotelesma». Το τελευταίο πεδίο παίρνει τιμές «Αναμονή», «Κερδισμένη» και «Χαμένη».
  2. Από το ερώτημα διασταύρωσης «qryApotelesmataAnaPoliti» το οποίο στηρίζεται στον πίνακα «tblPolisis» (θα μπορούσε να στηριχθεί και σε ρώτημα) που εμφανίζει το πλήθος των επισκέψεων κάθε πωλητή και τα ποσοστά ανά κατηγορία «Αναμονή», «Κερδισμένη» και «Χαμένη».
Παρακάτω δίνεται και η SQL προβολή του ερωτήματος διασταύρωσης, στο οποίο, αν χρησιμοποιηθεί, θα πρέπει να γίνουν οι αναγκαίες αλλαγές στα ονόματα.
Κώδικας:

TRANSFORM Count(tblPolisis.[Pelatis])/[Σύνολο Πελατών] AS ΠλήθοςΤουPelatis
SELECT tblPolisis.Politis, Count(tblPolisis.Pelatis) AS [Σύνολο Πελατών]
FROM tblPolisis
GROUP BY tblPolisis.Politis
PIVOT tblPolisis.Apotelesma;

Φιλικά/Γιώργος
Υ.Γ Γιάννη καλωσορίζω και σ’ ένα ......

Tasos 29-11-10 19:21

Καλησπέρα στην παρέα!

Θα ήθελα στο σημείο αυτό να ως διαχειριστής να αναφέρω στη φίλη Μαρία ότι ο λογαριασμός της διαγράφηκε από τη μηχανή του φόρουμ
επειδή θεωρήθηκε ως λογαριασμός (*σ π α μ*) μάλλον λόγω του διπλού ονόματος εκφώνησης (ΜΑΡΙΑ ΜΑΡΙΑ).

Αγαπητή Μαρία, αν θέλεις, μπορείς να ξανακάνεις την εγγραφή σου χρησιμοποιώντας αυτή τη φορά ένα κανονικό όνομα προσφώνησης.

Φιλικά

Τάσος

nisgia 30-11-10 01:03

Παράθεση:

Αρχική Δημοσίευση από kapetang (Μήνυμα 4501)
Στο δείγμα βάσης δεδομένων που επισυνάπτεται παρουσιάζεται μια άλλη προσέγγιση με χρήση ερωτήματος διασταύρωσης.

Όντως Γιώργο! Πολύ καλύτερη η επιλογή του ερωτήματος διασταύρωσης.:045:
Δεν ξέρω όμως αν είναι σωστό να λαμβάνουν μέρος και οι πωλήσεις σε αναμονή στο ποσοστό επιτυχίας ή αποτυχίας. :hmm:
Για παράδειγμα, ο πωλητής ΑΑΑ έχει δυο στις δύο κερδισμένες και άλλες δύο σε αναμονή
αλλά το ποσοστό του είναι 50%. :confused:

Παράθεση:

Αρχική Δημοσίευση από kapetang (Μήνυμα 4501)
Υ.Γ Γιάννη καλωσορίζω και σ’ ένα ......

Καλώς σε βρήκα Γιώργο! :happy:
Ξέρω, γίναμε για φίλημα, όμως είχα αρκετές ημέρες "εκτός δικτύου".
(Η ευρυζωνικότητα δεν έχει φτάσει ακόμη στους πρόποδες του Γράμμου.:crying:)
Έτσι, είχα αντικαταστήσει το πληκτρολόγιο με το ...αλυσοπρίονο. :biggrin:

kapetang 30-11-10 09:58

Καλημέρα στην παρέα

Γιάννη, ευχαριστώ.
Παράθεση:

Δεν ξέρω όμως αν είναι σωστό να λαμβάνουν μέρος και οι πωλήσεις σε αναμονή στο ποσοστό επιτυχίας ή αποτυχίας.
Για παράδειγμα, ο πωλητής ΑΑΑ έχει δυο στις δύο κερδισμένες και άλλες δύο σε αναμονή
αλλά το ποσοστό του είναι 50%.
Κατά τη γνώμη μου, ο τρόπος υπολογισμού των ποσοστών, που εφαρμόστηκε, δίνει σαφείς πληροφορίες για τη δραστηριότητα κάθε πωλητή και επιπλέον απλοποιεί την υλοποίηση του ερωτήματος διασταύρωσης. Στο ερώτημα έχουμε τον αριθμό των επισκέψεων κάθε πωλητή και αν τον πολλαπλασιάσουμε με τα ποσοστά βρίσκουμε εύκολα πόσες είναι «Κερδισμένες» , «Χαμένες» ή σε «Αναμονή»,.
Αν στον υπολογισμό των ποσοστών δε λάβουμε υπόψη τις περιπτώσεις που είναι σε αναμονή, για να είναι σαφή τα ποσοστά και να έχουμε τις ίδιες πληροφορίες, θα πρέπει να προσθέσουμε στο ερώτημα (τουλάχιστον) και μία στήλη με τις επισκέψεις μείον τις «αναμονές». Αυξάνεται η πολυπλοκότητα χωρίς να έχουμε επιπλέον πληροφορίες.

Φιλικά/Γιώργος


Η ώρα είναι 02:24.

Ms-Office.gr - ©2000 - 2026, Jelsoft Enterprises Ltd.


Search Engine Optimization by vBSEO 3.3.2