Avatar billede sth Novice
14. december 2009 - 14:52 Der er 14 kommentarer og
1 løsning

find min hvor min er > 0

kan man finde min mængde i en tabel hvor min er > 0

SELECT max(vmi_stock_sale) as max_salg,
min(vmi_stock_sale) as min_salg,
avg(vmi_stock_sale) as avg_salg
FROM min_tabel
Avatar billede virtual1ty Nybegynder
14. december 2009 - 14:56 #1
SELECT max(vmi_stock_sale) as max_salg,
min(vmi_stock_sale) as min_salg,
avg(vmi_stock_sale) as avg_salg
WHERE min(vmi_stock_sale) > 0
FROM min_tabel


Vil jeg tro.. Ikke testet.
Avatar billede arne_v Ekspert
14. december 2009 - 14:58 #2
Jeg tror at du leder efter:

SELECT name,max(vmi_stock_sale) as max_salg,
min(vmi_stock_sale) as min_salg,
avg(vmi_stock_sale) as avg_salg
FROM min_tabel
GROUP BY name
HAVING min_salg > 0
Avatar billede j4k0b Nybegynder
14. december 2009 - 15:05 #3
Brug HAVING til at sætte betingelser med aggregat funktioner
Avatar billede j4k0b Nybegynder
14. december 2009 - 15:05 #4
...ligesom arne_v nåede at skrive før mig ;)
Avatar billede sth Novice
14. december 2009 - 15:09 #5
Arne er name i group by name så min dato? og ender jeg så ikke med kun at få lavet avg på de dage hvor salget har været >0
Avatar billede arne_v Ekspert
14. december 2009 - 15:16 #6
Du skal gruppere efter et eller andet for at faa mere end en raekke og du betingelsen giver vel kun mening mere mere end en raekke. Jeg ved ikke hvad du vil gruppere paa - det maa du jo vide.
Avatar billede sth Novice
14. december 2009 - 15:36 #7
ja det har du selvf ret i :-) men mit bud er så dato
altså som dette:

SELECT vmi_stock_date, max(vmi_stock_sale) as max_salg,
min(vmi_stock_sale) as min_salg,
avg(vmi_stock_sale) as avg_salg
FROM temp753099083
GROUP BY vmi_stock_date
HAVING min_salg > 0


Dette giver mig dette:

2009-11-18      17.00      17.00      17.000000
2009-11-19      47.00      47.00      47.000000
2009-11-20      10.00      10.00      10.000000
2009-11-24        7.00      7.00        7.000000
2009-11-25        7.00      7.00        7.000000
2009-11-26      23.00      23.00      23.000000
2009-11-30        6.00      6.00        6.000000
2009-12-02        3.00      3.00        3.000000
2009-12-03        5.00      5.00        5.000000
2009-12-08        3.00      3.00        3.000000
2009-12-09        9.00      9.00        9.000000

og så er gennemsnit jo ikke rigtig .

min tabel ser sådan ud:

CREATE TABLE `temp753099083` (
  `vmi_stock_cust` varchar(10) default NULL,
  `vmi_stock_part` varchar(10) default NULL,
  `vmi_stock_date` date default NULL,
  `vmi_stock_on_stock` double(10,2) default '0.00',
  `vmi_stock_min` double(10,2) default '0.00',
  `vmi_stock_sale` double(10,2) default '0.00',
  `vmi_stock_max` double(10,2) default '0.00',
  `vmi_stock_bay` double(10,2) default '0.00'
) ENGINE=MyISAM DEFAULT CHARSET=latin1;


men jeg kunne selvf lave 2 ud træk og så ville det jo virke
Avatar billede arne_v Ekspert
14. december 2009 - 19:56 #8
vmi_stock_par maaske ??
Avatar billede sth Novice
17. december 2009 - 13:40 #9
Hej igen nej det virker ikke.

jeg må lave det med 2 ud træk, kom med et svar så afregner
Avatar billede arne_v Ekspert
18. december 2009 - 02:11 #10
Hvis du viser nogle data og hvilket output du vil have fra de data, så tror jeg at vi kan finde en løsning.
Avatar billede sth Novice
27. december 2009 - 11:20 #11
jeg endte med at lave 2 forespørgselser og så virker det

men Arne du har nok ret, jeg skulle have forklaret mig bedre.
jeg havde nogle data med et købs mønster fra en kunde,

konden kunne have købt som sådan
2009-12-01 10 styk
2009-12-02  0 styk
2009-12-03 0 styk
2009-12-04 1 styk
2009-12-05 4 styk
2009-12-06 5 styk


og så var det at jeg gerne ville have vist det største køb,det gennemsnitlige køb pr. dag (inc dage med 0 køb) og mindste køb hvor købet ikke var 0, hvilket så er 1

og det kunne jeg ikke få til at lykkes, og efter at have tænkt lidt over det så tror ejg ikke selv på at det er muligt

men hvis du kan trylle en løsning så vil det da være fint og jeg vil have lært en del :-) men kan du ikke så bare kom med etsvar så afregner vi og lukker
Avatar billede arne_v Ekspert
29. december 2009 - 02:05 #12
Som:

mysql> SELECT *
    -> FROM salg;
+----+------------+------+
| id | dato      | styk |
+----+------------+------+
|  1 | 2009-12-01 |  10 |
|  2 | 2009-12-02 |    0 |
|  3 | 2009-12-03 |    0 |
|  4 | 2009-12-04 |    1 |
|  5 | 2009-12-05 |    4 |
|  6 | 2009-12-01 |    5 |
+----+------------+------+
6 rows in set (0.02 sec)

mysql>
mysql> SELECT MAX(styk),AVG(styk),MIN(NULLIF(styk,0)),MIN(styk)
    -> FROM salg;
+-----------+-----------+---------------------+-----------+
| MAX(styk) | AVG(styk) | MIN(NULLIF(styk,0)) | MIN(styk) |
+-----------+-----------+---------------------+-----------+
|        10 |    3.3333 |                  1 |        0 |
+-----------+-----------+---------------------+-----------+
1 row in set (0.00 sec)
Avatar billede arne_v Ekspert
29. december 2009 - 02:05 #13
Og et svar.
Avatar billede arne_v Ekspert
29. december 2009 - 02:07 #14
Hm - hvor blev mine indlæg af ?
Avatar billede arne_v Ekspert
29. december 2009 - 02:08 #15
Nå - der er tilbage igen.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester