![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 24.12.2006 Ostrzeżenie: (0%) ![]() ![]() |
Mam do napisania pewną kwerendę, mianowicie w pierwszym polu w tabeli mam wartość pola autonumerowanie onazwie ID, w następnej mam pole formatowane jako data krótka o nazwie Data, w trzeciej kolumnie pole reprezentujące wartość liczbową, które akurat w moim przypadku jest nakładem gazety o nazwie poprostu Naklad. Zdarza mi się, że drukuję gazetę dwa razy tego samego dnia z dwóch maszyn jednocześnie, powiedzmy mam do wydrukowania 100000 Faktu łącznie w danym dniu to drukuję 50000 na jednej i 50000 na drugiej maszynie, czyli mam dwa rekordy tego samego dnia dotyczące nakładu, czyli jeśli chcę obliczyć średni nakład faktu w miesiącu to dni w którym są dwa rekordy przekłamują mi tą średnią, gdyż nie interesuje mnie to ile dana maszyna wydrukowała gazet tylko ile w danym dniu gazet wydrukowano. Funkcją, która rozwiązuje mi ów problem jest zagnieżdżona funkcja COUNT DISTINCT , lecz niestety nie wiem dlaczego w accesie nie chcą ze sobą one współpracować w przeciwieństwie chociażby do PostgreSQL. Tak wygląda owa kwerenda , jeśli ktoś ma inny pomysł, albo potrafi wytłumaczyć dlaczego one nie działają to będę wdzięczny.
SELECT SUM(Fakt.Naklad)/COUNT(DISTINCT(Fakt.Data)) AS Sredni_Naklad FROM Fakt; |
|
|
![]() |
![]() ![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 24.12.2006 Ostrzeżenie: (0%) ![]() ![]() |
Niestety nie mogę zrobić czegoś takiego jak:
SELECT Fakt.Data, Sum([Fakt.Naklad])/Count([Fakt.Data]) AS Srednia ,gdyż dat mam więcej niż jedna dziennie czyli np. tabela wygląda tak: ID_____Data______Naklad 1____2007-01-01____2000 2____2007-01-01____3000 3____2007-01-02____5000 Chcę obliczyć średni nakład, który powinien wynieść 5000 sztuk czyli ma dodać 2000+3000+5000 i podzielić przez sumę unikatowych dni czyli dwa dni a nie trzy. Taka funkcja powinna załatwić sprawę Sum([Fakt.Naklad])/Count(Distinct([Fakt.Data])) AS Srednia Niestety nie działa, dlatego zwracam sie do was jak można inaczej rozwiązać ten problem. Użycie funkcji Group by spowoduje, że zostanie wyświetlona średnia wartość w danym dniu, a ja chce średnią wartość we wszystkich dniach łącznie. Czyli nie chcę takiego wyniku działania kwerendy jak przedstawiony w odpowiedzi: __Data______Naklad 2007-01-01___2500 2007-01-02___5000 Natomiast interesuje mnie jeden rekord wyświetlany przez kwerendę, reprezentujący średnią z wszystkich unikatowych dni. W tym przypadku: 5000 Wiem, ze jest to możliwe bo jak pisałem wyżej w PostgreSQL działa to bez problemu. (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) Ten post edytował bini23 7.03.2007, 09:31:47 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 6.10.2025 - 19:37 |