elroy 6 Zgłoś post Napisano Sierpień 1, 2014 (edytowany) CześćMam taką tabelę DATA_RAPORTU | Nazwa_indeksu | Ilosć_sztuk_s -------------------------------------------------------- 2014-01-01 aaaaa 4 2014-01-02 aaaaa 5 2014-01-03 bbbbb 3 Zliczam sobie rekordy tak: SELECT data_raportu, Nazwa_indeksu, SUM(`Ilosc_sztuk_s`) FROM raporty WHERE (`data_raportu` BETWEEN '".$wys."-15' AND '".$wys."-31') GROUP BY Nazwa_indeksu ORDER BY data_raportu, SUM(`Ilosc_sztuk_s`) DESC LIMIT 2Wynik Nazwa_indeksu | Ilosć_sztuk_s -------------------------------------------------------- aaaaa 9 bbbbb 3 Teraz potrzebuję zliczyć sumę Ilosc_sztuk_s z limitem do tych 2 pozycjiJak powinienem odpytać bazę? Dzięki za pomoc, bo mam zaćmienie i utknąłem Edytowano Sierpień 1, 2014 przez elroy (zobacz historię edycji) Udostępnij ten post Link to postu Udostępnij na innych stronach
PapaSmerf 497 Zgłoś post Napisano Sierpień 1, 2014 Limitować chcesz ilość wierszy zwróconych czy wartość kolumny ilosc_sztuk_s? Udostępnij ten post Link to postu Udostępnij na innych stronach
elroy 6 Zgłoś post Napisano Sierpień 1, 2014 (edytowany) Muszę obliczyć po prostu sumę sprzedaży top10 produktów z danego okresu. Więc odpowiadając na pytanie, chyba wartość kolumny ilosc_sztuk_s ? W przypadku powyższym, to do czego dążę to wartość 12 czyli suma kolumny ilosc_sztuk_s ograniczona do dziesięciu rekordów. Edytowano Sierpień 1, 2014 przez elroy (zobacz historię edycji) Udostępnij ten post Link to postu Udostępnij na innych stronach
Janisz 0 Zgłoś post Napisano Sierpień 1, 2014 select sum(t.suma) from (SELECT data_raportu, Nazwa_indeksu, SUM(`Ilosc_sztuk_s`) as suma FROM raporty WHERE (`data_raportu` BETWEEN '".$wys."-15' AND '".$wys."-31') GROUP BY Nazwa_indeksu ORDER BY data_raportu, SUM(`Ilosc_sztuk_s`) DESC LIMIT 2) t Powinno zadziałać Udostępnij ten post Link to postu Udostępnij na innych stronach
elroy 6 Zgłoś post Napisano Sierpień 1, 2014 Prawie Jak ustawię zakres daty na jeden dzień, to zlicza prawidłową ilość, w zakresie od-do już nie. Podaje nie prawidłowe liczby. Jakieś sugestie? Udostępnij ten post Link to postu Udostępnij na innych stronach
ritchey 91 Zgłoś post Napisano Sierpień 1, 2014 (edytowany) Nie wiem czy dobrze zrozumiałem:Jeżeli nazwa indeksu oznacza produkt, a Ty potrzebujesz obliczyć sumę sprzedaży top 10 produktów w okresie od-do.To zapytanie zwróci Ci Top10 produktów (ich sprzedaż) w okresie 1 styczeń - 1 luty: select r.nazwa_indeksu as Produkt, sum(r.ilosc_sztuk_s) as Sztuki from Raporty r where r.data_raportu between '2014-01-01' and '2014-02-01' group by 1 order by 2 desc Natomiast to zwróci sumę top 10 produktów w analogicznym okresie: select sum(a.Sztuki) from ( select r.nazwa_indeksu as Produkt, sum(r.ilosc_sztuk_s) as Sztuki from Raporty r where r.data_raportu between '2014-01-01' and '2014-02-01' group by 1 order by 2 desc limit 10) a Daj znać czy o to Ci chodziło ? P.S. Napisane w dialekcie PostgreSQL - być może będzie potrzebować kosmetycznych poprawek dla MySQL. Edytowano Sierpień 1, 2014 przez ritchey (zobacz historię edycji) 1 Udostępnij ten post Link to postu Udostępnij na innych stronach
elroy 6 Zgłoś post Napisano Sierpień 2, 2014 Cześć! Dzięki, dokładnie o to mi chodziło. Jestem Twoim dłużnikiem. Udostępnij ten post Link to postu Udostępnij na innych stronach
ritchey 91 Zgłoś post Napisano Sierpień 2, 2014 Wystarczy że też komuś bezinteresownie pomożesz - a spłacisz Twój dług Udostępnij ten post Link to postu Udostępnij na innych stronach