Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
ALain Montfranc
Etienne SOBOLE a écrit
salut.
j'ai dans une base de données des produits qui ont une marque. il y a 4 marques principales et tout plein de petites marques
pour faire simple je cherche a faire un select marque, count(*) from produit group by marque
sauf que j'ai besoin de grouper toutes les petites marque entre elles.
en gros j'aimerai n'avoir que 5 lignes en retour avec: m1, 234 m2, 333 m3, 543 m4, 541 autre, 246
ou autre serait le regroupement de toutes les marques qui ne sont pas m1, m2, m3 ou m4
c'est possible de faire ca en SQL ??? voila merci.
Etienne
Sous postgresql avec un case et un subselect
select marque, count(*) from (select case when marque = 'm1 or marque = 'm2' ... then marque else 'autre' end from table) group by marque
(non testé, de tête)
ou alors
select marque, count(*) from table where marque in ( 'm1', 'm2', 'm3', 'm4' ) group by marque union select 'autre', count(*) from table where marque not in ( 'm1', 'm2', 'm3', 'm4' ) group by marque
Etienne SOBOLE a écrit
salut.
j'ai dans une base de données des produits qui ont une marque.
il y a 4 marques principales et tout plein de petites marques
pour faire simple je cherche a faire un
select marque, count(*) from produit group by marque
sauf que j'ai besoin de grouper toutes les petites marque entre elles.
en gros j'aimerai n'avoir que 5 lignes en retour avec:
m1, 234
m2, 333
m3, 543
m4, 541
autre, 246
ou autre serait le regroupement de toutes les marques qui ne sont pas m1, m2,
m3 ou m4
c'est possible de faire ca en SQL ???
voila merci.
Etienne
Sous postgresql avec un case et un subselect
select marque, count(*) from (select case when marque = 'm1 or marque =
'm2' ... then marque else 'autre' end from table) group by marque
(non testé, de tête)
ou alors
select marque, count(*) from table where marque in ( 'm1', 'm2', 'm3',
'm4' ) group by marque
union
select 'autre', count(*) from table where marque not in ( 'm1', 'm2',
'm3', 'm4' ) group by marque
j'ai dans une base de données des produits qui ont une marque. il y a 4 marques principales et tout plein de petites marques
pour faire simple je cherche a faire un select marque, count(*) from produit group by marque
sauf que j'ai besoin de grouper toutes les petites marque entre elles.
en gros j'aimerai n'avoir que 5 lignes en retour avec: m1, 234 m2, 333 m3, 543 m4, 541 autre, 246
ou autre serait le regroupement de toutes les marques qui ne sont pas m1, m2, m3 ou m4
c'est possible de faire ca en SQL ??? voila merci.
Etienne
Sous postgresql avec un case et un subselect
select marque, count(*) from (select case when marque = 'm1 or marque = 'm2' ... then marque else 'autre' end from table) group by marque
(non testé, de tête)
ou alors
select marque, count(*) from table where marque in ( 'm1', 'm2', 'm3', 'm4' ) group by marque union select 'autre', count(*) from table where marque not in ( 'm1', 'm2', 'm3', 'm4' ) group by marque
Eric Rossé
Le Wed, 20 Jun 2007 12:19:25 +0200, Etienne SOBOLE écrivait:
salut.
j'ai dans une base de données des produits qui ont une marque. il y a 4 marques principales et tout plein de petites marques
pour faire simple je cherche a faire un select marque, count(*) from produit group by marque
sauf que j'ai besoin de grouper toutes les petites marque entre elles.
en gros j'aimerai n'avoir que 5 lignes en retour avec: m1, 234 m2, 333 m3, 543 m4, 541 autre, 246
ou autre serait le regroupement de toutes les marques qui ne sont pas m1, m2, m3 ou m4
c'est possible de faire ca en SQL ???
Oui.
select marque,count(*) from produit where marque in ('m1','m2','m3','m4') group by 1 union select 'autre',count(*) from produit where marque not in ('m1','m2','m3','m4') group by 1
Et avec une table marque qui précise pour chaque marque celle qui est principale et celle qui ne l'est pas, c'est encore plus simple.
Le Wed, 20 Jun 2007 12:19:25 +0200, Etienne SOBOLE écrivait:
salut.
j'ai dans une base de données des produits qui ont une marque.
il y a 4 marques principales et tout plein de petites marques
pour faire simple je cherche a faire un
select marque, count(*) from produit group by marque
sauf que j'ai besoin de grouper toutes les petites marque entre elles.
en gros j'aimerai n'avoir que 5 lignes en retour avec:
m1, 234
m2, 333
m3, 543
m4, 541
autre, 246
ou autre serait le regroupement de toutes les marques qui ne sont pas m1,
m2, m3 ou m4
c'est possible de faire ca en SQL ???
Oui.
select marque,count(*) from produit
where marque in ('m1','m2','m3','m4')
group by 1
union
select 'autre',count(*) from produit
where marque not in ('m1','m2','m3','m4')
group by 1
Et avec une table marque qui précise pour chaque marque celle
qui est principale et celle qui ne l'est pas, c'est encore plus
simple.
Le Wed, 20 Jun 2007 12:19:25 +0200, Etienne SOBOLE écrivait:
salut.
j'ai dans une base de données des produits qui ont une marque. il y a 4 marques principales et tout plein de petites marques
pour faire simple je cherche a faire un select marque, count(*) from produit group by marque
sauf que j'ai besoin de grouper toutes les petites marque entre elles.
en gros j'aimerai n'avoir que 5 lignes en retour avec: m1, 234 m2, 333 m3, 543 m4, 541 autre, 246
ou autre serait le regroupement de toutes les marques qui ne sont pas m1, m2, m3 ou m4
c'est possible de faire ca en SQL ???
Oui.
select marque,count(*) from produit where marque in ('m1','m2','m3','m4') group by 1 union select 'autre',count(*) from produit where marque not in ('m1','m2','m3','m4') group by 1
Et avec une table marque qui précise pour chaque marque celle qui est principale et celle qui ne l'est pas, c'est encore plus simple.
Lionel
Etienne SOBOLE wrote:
salut.
j'ai dans une base de données des produits qui ont une marque. il y a 4 marques principales et tout plein de petites marques
pour faire simple je cherche a faire un select marque, count(*) from produit group by marque
sauf que j'ai besoin de grouper toutes les petites marque entre elles.
en gros j'aimerai n'avoir que 5 lignes en retour avec: m1, 234 m2, 333 m3, 543 m4, 541 autre, 246
Rajoute une colonne marque_bilan sur ta table des marque et ta requete devient: select marque_bilan, count(*) from produit group by marque_bilan
Etienne SOBOLE wrote:
salut.
j'ai dans une base de données des produits qui ont une marque.
il y a 4 marques principales et tout plein de petites marques
pour faire simple je cherche a faire un
select marque, count(*) from produit group by marque
sauf que j'ai besoin de grouper toutes les petites marque entre elles.
en gros j'aimerai n'avoir que 5 lignes en retour avec:
m1, 234
m2, 333
m3, 543
m4, 541
autre, 246
Rajoute une colonne marque_bilan sur ta table des marque et ta requete
devient:
select marque_bilan, count(*) from produit group by marque_bilan
j'ai dans une base de données des produits qui ont une marque. il y a 4 marques principales et tout plein de petites marques
pour faire simple je cherche a faire un select marque, count(*) from produit group by marque
sauf que j'ai besoin de grouper toutes les petites marque entre elles.
en gros j'aimerai n'avoir que 5 lignes en retour avec: m1, 234 m2, 333 m3, 543 m4, 541 autre, 246
Rajoute une colonne marque_bilan sur ta table des marque et ta requete devient: select marque_bilan, count(*) from produit group by marque_bilan
Etienne SOBOLE
select marque,count(*) from produit where marque in ('m1','m2','m3','m4') group by 1 union select 'autre',count(*) from produit where marque not in ('m1','m2','m3','m4') group by 1
Et avec une table marque qui précise pour chaque marque celle qui est principale et celle qui ne l'est pas, c'est encore plus simple.
oui effectivement j'ai cette information. en quoi cela peut simplifier ou accelerer la requete!
merci.
select marque,count(*) from produit
where marque in ('m1','m2','m3','m4')
group by 1
union
select 'autre',count(*) from produit
where marque not in ('m1','m2','m3','m4')
group by 1
Et avec une table marque qui précise pour chaque marque celle
qui est principale et celle qui ne l'est pas, c'est encore plus
simple.
oui effectivement j'ai cette information.
en quoi cela peut simplifier ou accelerer la requete!
select marque,count(*) from produit where marque in ('m1','m2','m3','m4') group by 1 union select 'autre',count(*) from produit where marque not in ('m1','m2','m3','m4') group by 1
Et avec une table marque qui précise pour chaque marque celle qui est principale et celle qui ne l'est pas, c'est encore plus simple.
oui effectivement j'ai cette information. en quoi cela peut simplifier ou accelerer la requete!
merci.
Etienne SOBOLE
select marque, count(*) from (select case when marque = 'm1 or marque = 'm2' ... then marque else 'autre' end from table) group by marque
ou alors
select marque, count(*) from table where marque in ( 'm1', 'm2', 'm3', 'm4' ) group by marque union select 'autre', count(*) from table where marque not in ( 'm1', 'm2', 'm3', 'm4' ) group by marque
merci j'essaye tout ca ! Etienne
select marque, count(*) from (select case when marque = 'm1 or marque =
'm2' ... then marque else 'autre' end from table) group by marque
ou alors
select marque, count(*) from table where marque in ( 'm1', 'm2', 'm3',
'm4' ) group by marque
union
select 'autre', count(*) from table where marque not in ( 'm1', 'm2',
'm3', 'm4' ) group by marque
select marque, count(*) from (select case when marque = 'm1 or marque = 'm2' ... then marque else 'autre' end from table) group by marque
ou alors
select marque, count(*) from table where marque in ( 'm1', 'm2', 'm3', 'm4' ) group by marque union select 'autre', count(*) from table where marque not in ( 'm1', 'm2', 'm3', 'm4' ) group by marque
merci j'essaye tout ca ! Etienne
Eric Rossé
Le Sat, 23 Jun 2007 10:06:37 +0200, Etienne SOBOLE écrivait:
select marque,count(*) from produit where marque in ('m1','m2','m3','m4') group by 1 union select 'autre',count(*) from produit where marque not in ('m1','m2','m3','m4') group by 1
Et avec une table marque qui précise pour chaque marque celle qui est principale et celle qui ne l'est pas, c'est encore plus simple.
oui effectivement j'ai cette information. en quoi cela peut simplifier ou accelerer la requete!
J'aurai dû dire générique et non simple... et je n'ai pas parlé performances:
select m.lib_marque,count(*) from produit p,marque m where p.code_marque = m.code_marque and m.type_marque = '1' group by 1 union select 'autre',count(*) from produit p,marque m where p.code_marque = m.code_marque and m.type_marque = '0' group by 1
avec type_marque = '1' : marque principale type_marque = '0' : autre marque
Le Sat, 23 Jun 2007 10:06:37 +0200, Etienne SOBOLE écrivait:
select marque,count(*) from produit
where marque in ('m1','m2','m3','m4')
group by 1
union
select 'autre',count(*) from produit
where marque not in ('m1','m2','m3','m4')
group by 1
Et avec une table marque qui précise pour chaque marque celle
qui est principale et celle qui ne l'est pas, c'est encore plus
simple.
oui effectivement j'ai cette information.
en quoi cela peut simplifier ou accelerer la requete!
J'aurai dû dire générique et non simple... et je n'ai pas
parlé performances:
select m.lib_marque,count(*) from produit p,marque m
where p.code_marque = m.code_marque
and m.type_marque = '1'
group by 1
union
select 'autre',count(*) from produit p,marque m
where p.code_marque = m.code_marque
and m.type_marque = '0'
group by 1
avec
type_marque = '1' : marque principale
type_marque = '0' : autre marque
Le Sat, 23 Jun 2007 10:06:37 +0200, Etienne SOBOLE écrivait:
select marque,count(*) from produit where marque in ('m1','m2','m3','m4') group by 1 union select 'autre',count(*) from produit where marque not in ('m1','m2','m3','m4') group by 1
Et avec une table marque qui précise pour chaque marque celle qui est principale et celle qui ne l'est pas, c'est encore plus simple.
oui effectivement j'ai cette information. en quoi cela peut simplifier ou accelerer la requete!
J'aurai dû dire générique et non simple... et je n'ai pas parlé performances:
select m.lib_marque,count(*) from produit p,marque m where p.code_marque = m.code_marque and m.type_marque = '1' group by 1 union select 'autre',count(*) from produit p,marque m where p.code_marque = m.code_marque and m.type_marque = '0' group by 1
avec type_marque = '1' : marque principale type_marque = '0' : autre marque
Fred Brouard - SQLpro
Plus simple :
select m.lib_marque, SUM(CASE m.type_marque = '1' THEN 1 CASE m.type_marque = '0' THEN 1 END) AS NOMBRE from produit p INNER JOIN marque m ON p.code_marque = m.code_marque group by m.lib_marque
A +
Etienne SOBOLE a écrit :
salut.
j'ai dans une base de données des produits qui ont une marque. il y a 4 marques principales et tout plein de petites marques
pour faire simple je cherche a faire un select marque, count(*) from produit group by marque
sauf que j'ai besoin de grouper toutes les petites marque entre elles.
en gros j'aimerai n'avoir que 5 lignes en retour avec: m1, 234 m2, 333 m3, 543 m4, 541 autre, 246
ou autre serait le regroupement de toutes les marques qui ne sont pas m1, m2, m3 ou m4
c'est possible de faire ca en SQL ??? voila merci.
Etienne
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation ********************* http://www.datasapiens.com ***********************
Plus simple :
select m.lib_marque,
SUM(CASE m.type_marque = '1' THEN 1
CASE m.type_marque = '0' THEN 1 END) AS NOMBRE
from produit p
INNER JOIN marque m
ON p.code_marque = m.code_marque
group by m.lib_marque
A +
Etienne SOBOLE a écrit :
salut.
j'ai dans une base de données des produits qui ont une marque.
il y a 4 marques principales et tout plein de petites marques
pour faire simple je cherche a faire un
select marque, count(*) from produit group by marque
sauf que j'ai besoin de grouper toutes les petites marque entre elles.
en gros j'aimerai n'avoir que 5 lignes en retour avec:
m1, 234
m2, 333
m3, 543
m4, 541
autre, 246
ou autre serait le regroupement de toutes les marques qui ne sont pas m1,
m2, m3 ou m4
c'est possible de faire ca en SQL ???
voila merci.
Etienne
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
select m.lib_marque, SUM(CASE m.type_marque = '1' THEN 1 CASE m.type_marque = '0' THEN 1 END) AS NOMBRE from produit p INNER JOIN marque m ON p.code_marque = m.code_marque group by m.lib_marque
A +
Etienne SOBOLE a écrit :
salut.
j'ai dans une base de données des produits qui ont une marque. il y a 4 marques principales et tout plein de petites marques
pour faire simple je cherche a faire un select marque, count(*) from produit group by marque
sauf que j'ai besoin de grouper toutes les petites marque entre elles.
en gros j'aimerai n'avoir que 5 lignes en retour avec: m1, 234 m2, 333 m3, 543 m4, 541 autre, 246
ou autre serait le regroupement de toutes les marques qui ne sont pas m1, m2, m3 ou m4
c'est possible de faire ca en SQL ??? voila merci.
Etienne
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation ********************* http://www.datasapiens.com ***********************
ALain Montfranc
Fred Brouard - SQLpro a écrit
Plus simple :
select m.lib_marque, SUM(CASE m.type_marque = '1' THEN 1 CASE m.type_marque = '0' THEN 1 END) AS NOMBRE from produit p INNER JOIN marque m ON p.code_marque = m.code_marque group by m.lib_marque
Ca serait pas plutot un truc du genre
select CASE m.type_marque = '1' THEN m.lib_marque CASE m.type_marque = '0' THEN 'Autres' END, SUM(1) AS NOMBRE from produit p INNER JOIN marque m ON p.code_marque = m.code_marque group CASE m.type_marque = '1' THEN m.lib_marque CASE m.type_marque = '0' THEN 1 END
e
Fred Brouard - SQLpro a écrit
Plus simple :
select m.lib_marque,
SUM(CASE m.type_marque = '1' THEN 1
CASE m.type_marque = '0' THEN 1 END) AS NOMBRE
from produit p
INNER JOIN marque m
ON p.code_marque = m.code_marque
group by m.lib_marque
Ca serait pas plutot un truc du genre
select CASE m.type_marque = '1' THEN m.lib_marque
CASE m.type_marque = '0' THEN 'Autres' END,
SUM(1) AS NOMBRE
from produit p
INNER JOIN marque m
ON p.code_marque = m.code_marque
group CASE m.type_marque = '1' THEN m.lib_marque
CASE m.type_marque = '0' THEN 1 END
select m.lib_marque, SUM(CASE m.type_marque = '1' THEN 1 CASE m.type_marque = '0' THEN 1 END) AS NOMBRE from produit p INNER JOIN marque m ON p.code_marque = m.code_marque group by m.lib_marque
Ca serait pas plutot un truc du genre
select CASE m.type_marque = '1' THEN m.lib_marque CASE m.type_marque = '0' THEN 'Autres' END, SUM(1) AS NOMBRE from produit p INNER JOIN marque m ON p.code_marque = m.code_marque group CASE m.type_marque = '1' THEN m.lib_marque CASE m.type_marque = '0' THEN 1 END
e
Fred Brouard - SQLpro
ALain Montfranc a écrit :
Fred Brouard - SQLpro a écrit
Plus simple :
select m.lib_marque, SUM(CASE m.type_marque = '1' THEN 1 CASE m.type_marque = '0' THEN 1 END) AS NOMBRE from produit p INNER JOIN marque m ON p.code_marque = m.code_marque group by m.lib_marque
Ca serait pas plutot un truc du genre
select CASE m.type_marque = '1' THEN m.lib_marque CASE m.type_marque = '0' THEN 'Autres' END, SUM(1) AS NOMBRE from produit p INNER JOIN marque m ON p.code_marque = m.code_marque group CASE m.type_marque = '1' THEN m.lib_marque CASE m.type_marque = '0' THEN 1 END
e
donnez moi un jeu d'essai et la réaponse que vous attendez !
A +
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation ********************* http://www.datasapiens.com ***********************
ALain Montfranc a écrit :
Fred Brouard - SQLpro a écrit
Plus simple :
select m.lib_marque,
SUM(CASE m.type_marque = '1' THEN 1
CASE m.type_marque = '0' THEN 1 END) AS NOMBRE
from produit p
INNER JOIN marque m
ON p.code_marque = m.code_marque
group by m.lib_marque
Ca serait pas plutot un truc du genre
select CASE m.type_marque = '1' THEN m.lib_marque
CASE m.type_marque = '0' THEN 'Autres' END,
SUM(1) AS NOMBRE
from produit p
INNER JOIN marque m
ON p.code_marque = m.code_marque
group CASE m.type_marque = '1' THEN m.lib_marque
CASE m.type_marque = '0' THEN 1 END
e
donnez moi un jeu d'essai et la réaponse que vous attendez !
A +
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
select m.lib_marque, SUM(CASE m.type_marque = '1' THEN 1 CASE m.type_marque = '0' THEN 1 END) AS NOMBRE from produit p INNER JOIN marque m ON p.code_marque = m.code_marque group by m.lib_marque
Ca serait pas plutot un truc du genre
select CASE m.type_marque = '1' THEN m.lib_marque CASE m.type_marque = '0' THEN 'Autres' END, SUM(1) AS NOMBRE from produit p INNER JOIN marque m ON p.code_marque = m.code_marque group CASE m.type_marque = '1' THEN m.lib_marque CASE m.type_marque = '0' THEN 1 END
e
donnez moi un jeu d'essai et la réaponse que vous attendez !
A +
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation ********************* http://www.datasapiens.com ***********************