Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server > Développement
Développement Forum d'entraide sur le Transact-SQL, le CLR, les procédures stockées, les triggers, les requêtes SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/10/2011, 23h21   #1
Invité de passage
 
Homme Xavier BLANCHARD
Ingénieur qualité méthodes
Inscription : septembre 2011
Messages : 8
Détails du profil
Informations personnelles :
Nom : Homme Xavier BLANCHARD
Localisation : France, Haute Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Ingénieur qualité méthodes
Secteur : Industrie

Informations forums :
Inscription : septembre 2011
Messages : 8
Points : 1
Points : 1
Par défaut Calcul de Taux de Rebuts

Bonsoir,

J'ai dans un base (SQL Server 2008 R2) une table d'enregistrements comptant entre autres les champs suivants :

- ID_Enregistrement ---> INT auto increment
- DateHeure
- Type_Pièces ---> INT (lien autre table)
- Quantité_Pièces ---> INT
- Opérateur ---> INT (lien autre table)
- Qualité_Pièces ---> CHAR(1) / R=Rebut / B= Bonne / P = Retouchée

Une partie des déclaration est effectuée en automatique (pièces sorties de la chaine peinture) avec une quantité pièce définie par lot et une qualité_pièces à 4.

Lors de l'affectation ensuite par les opérateurs de pièces retouchées ou retouchées, j'affecte un -1 bonne et un +1 Rebut ou un +1 retouchée.

Je voudrais obtenir mon taux de rebut.

Pour le moment, j'ai créé 3 vues :
0 - table d'enregistrement
1 - vue pour calcul des bonnes (SUM (Quantité) et WHERE Qualité_Pièces = 'B')
2 - vue pour calcul des rebuts (SUM (Quantité) et WHERE Qualité_Pièces = 'R')
3 - calcul du taux de rebut (Vue 3 / Vue 2)


Existe-t-il un moyen plus simple et plus rapide (délai de calcul = environ 5sec) ???

D'avance merci de vos réponses éclairées.

@xvier
Axvier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/10/2011, 09h59   #2
Membre Expert
 
Homme Sylvain Devidal
Chef de projets Générix
Inscription : février 2010
Messages : 1 062
Détails du profil
Informations personnelles :
Nom : Homme Sylvain Devidal
Âge : 33
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Chef de projets Générix
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : février 2010
Messages : 1 062
Points : 1 515
Points : 1 515
Au lieu de passer par trois vues, tu peux essayer de tout faire une une seule requête.

Ceci dit, le gain devrait être marginal.

La méthode me semble bonne pour le calcul, je ne vois pas comment tu pourrais faire autrement.

Les index sont-ils bien utilisés ? Quelle est la volumétrie ?
StringBuilder est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/10/2011, 18h16   #3
Modérateur

 
Avatar de elsuket
 
Homme Nicolas Souquet
Administrateur de base de données
Inscription : janvier 2005
Messages : 4 669
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Souquet
Âge : 30
Localisation : Thaïlande

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2005
Messages : 4 669
Points : 8 729
Points : 8 729
Bonjour,

Vous pouvez essayer ceci :

Code :
1
2
3
4
5
6
7
8
9
10
11
WITH
	CTE_REBUT AS
	(
		SELECT	SUM(Quantité_Pièces) AS quantite_piece_rebut
		FROM	dbo.pieces
		WHERE	Qualité_Pièces = 'R'
	)
SELECT		SUM(Quantité_Pièces) / CR.quantite_piece_rebut
FROM		dbo.pieces AS P
CROSS JOIN	CTE_REBUT AS CR
WHERE		P.Qualité_Pièces = 'B'
Mais je ne sais pas si le gain sera énorme ...
Pouvez-vous donner :

- la définition des index de la table
- le plan réel d'exécution des deux requêtes (CTRL + M avant d'exécuter les deux requêtes)
- les statistiques d'activité disque généré (SET STATISTICS IO avant l'exécution des requêtes; le résultat se trouvera dans l'onglet Messages)
- la distribution des valeurs dans la colonne Qualité_Pièces, c'est-à-dire combien de lignes pour chaque statut
- une idée de la quantité de modifications de données que la table subit par jour
- si vous maintenez les index et les statistiques de la base de données

@++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes.
Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012
elsuket est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h29.


 
 
 
 
Partenaires

Hébergement Web