Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13

Discussione: [sql] select per fasce

  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,326

    [sql] select per fasce

    Ciao A tutti,

    ho una tabella articoli
    codice:
    CREATE TABLE ARTICOLI(
        ID               INTEGER NOT NULL PRIMARY KEY,
        ITEM             VARCHAR(60) NOT NULL,
        PREZZO           NUMERIC(15,2));
    devo effettuare una select che mi restituisce una lista raggruppata per fasce prezzo.

    quindi ad esempio

    codice:
     
    fascia     articoli
      0 - 100     7
    101 - 200     70
    201 - 300     10
    ....
    ...
    non riesco a trovare una soluzione
    mi sfugge qualcosa


    grazie

  2. #2
    Potresti introdurre un nuovo campo "fascia" nella tabella e creare un trigger da attivare prima di ogni inserimento dove, mediante if....elseif...else setti "fascia".
    A quel punto, avendo il campo fascia, puoi effettuare comodamente la select e il conteggio, raggruppando per fascia.
    Altrimenti puoi effettuare tante select quante sono le fasce e unire tutto con UNION.

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,326
    ciao,

    ho risolto in una maniera simile a quanto suggerito, senza, pero', creare un field fisico sulla tabella
    e lasciando, di volta in volta, all'utente la possibilita di definire la fascia

    codice:
    esempio con fasce di 100 euro.
    fascia 0 (prezzi da 0 a 100)
    fascia 100 (prezzi da 100 a 200)
    fascia 200 (prezzi da 200 a 300)
    
    select
    udf_int(articoli.prezzo/100)*100 FasciaPrezzo,
    count(articoli.id)
    from articoli
    group by
    udf_int(articoli.prezzo)/100)*100
    
    
    
    esempio con fasce di 250 euro.
    fascia 0 (prezzi da 0 a 250)
    fascia 250 (prezzi da 250 a 500)
    fascia 500 (prezzi da 500 a 750)
    
    select
    udf_int(articoli.prezzo/250)*250 FasciaPrezzo,
    count(articoli.id)
    from articoli
    group by
    udf_int(articoli.prezzo)/250)*250
    grazie

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,325

    Moderazione

    Visto che c'è nu forum appositamente dedicato ai database... sarebbe il caso di postare lì.

    Sposto.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    puoi fare una GROUP BY...CASE

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,326
    Originariamente inviato da optime
    puoi fare una GROUP BY...CASE
    potresti fare un esempio?

    grazie

  7. #7
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Che database usi?

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,326
    firebird

  9. #9
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    codice:
    select
    case
    when prezzo between 0 and 100 then '0-100'
    when prezzo between 101 and 200 then '101-200'
    when prezzo between 201 and 300 then '201-300'
    else 'altra fascia'
    end as fascia,
    count(*) as quanti
    from articoli
    group by fascia

  10. #10
    nicolino, con firebird puoi usare l'alias nella group by? perché m$sql non lo permette...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.