Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: COUNT i DISTINCT w jednym...
Forum PHP.pl > Forum > Bazy danych > MySQL
poldo
Witam,

Siedze, siedzie i nie mogę wpaść na pomysł jak rozgryźć poniższe zapytanie SQL, a że najczęściej rozwiązania bywają banalne i nie tam gdzie trzeba ich szukamy to chciałbym się was poradzić, może świeże spojrzenie na problem coś pomoże...

Mam przykładową tabele:

Kod
+------------+----------+
|    Data    |   Czas   |
+------------+----------+
| 2009-12-01 | 12:02:02 |
| 2009-12-01 | 13:43:11 |
| 2009-12-01 | 15:42:02 |
| 2009-12-02 | 16:15:41 |
| 2009-12-02 | 15:32:11 |
| 2009-12-03 | 12:06:01 |
| 2009-12-03 | 13:34:45 |
| 2009-12-03 | 11:22:54 |
| 2009-12-03 | 10:35:34 |
| 2009-12-04 | 19:56:12 |
+------------+----------+



I sprawa polega na tym żeby teraz był obliczany COUNT dla załóżmy ostatnich 3 dat (2009-12-04,2009-12-03,2009-12-02). Czyli wynik był następujący:

Kod
+------------+----------+
|    Data    | Ile_czas |
+------------+----------+
| 2009-12-02 |    2     |
| 2009-12-03 |    4     |
| 2009-12-04 |    1     |
+------------+----------+


Oczywiście da sie problem odejść w ten sposób, aby w np. PHPie pobrać zapytaniem najpierw ostatnie 3 daty, a potem puścić kolejne 3 zapytania z countem dla poszczególnych dat, ale napewno da się to w jakiś łatwiejszy sposób odfiltrować w sql. Próbowałem wielu zapytań, nabliższe rozwiązania byłoby chyba coś takiego, ale niestety nie działa:

  1. SELECT count(Czas) AS Ile_czas FROM tabela WHERE DATA = '(SELECT DISTINCT Data FROM tabela LIMIT 3)'


Jakieś sugestie, pomoc...?
Crozin
Kod
mysql> SELECT * FROM tbl1;
+------------+----------+
| Data       | Czas     |
+------------+----------+
| 2009-12-01 | 12:02:12 |
| 2009-12-01 | 14:02:12 |
| 2009-12-02 | 15:02:12 |
| 2009-12-02 | 15:12:12 |
| 2009-12-02 | 15:12:55 |
| 2009-12-02 | 15:52:55 |
| 2009-12-04 | 10:52:55 |
| 2009-12-04 | 10:52:15 |
| 2009-12-04 | 10:00:15 |
| 2009-12-05 | 09:00:15 |
+------------+----------+
10 rows in set (0.00 sec)

mysql> SELECT Data, COUNT(Czas) AS IleCzas FROM tbl1 GROUP BY Data ORDER BY Data DESC LIMIT 3;
+------------+---------+
| Data       | IleCzas |
+------------+---------+
| 2009-12-05 |       1 |
| 2009-12-04 |       3 |
| 2009-12-02 |       4 |
+------------+---------+
3 rows in set (0.00 sec)

mysql>
?
poldo
No tak... sciana.gif wstydnis.gif

Dziękować bardzo rolleyes.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.