2008-10-09 7 views
0

J'essaie d'exécuter une requête qui donnera des moyennes de temps mais quand je le fais ... certains enregistrements en double sont dans le calcul. comment puis-je supprimer les doublons?Expression SQL pour supprimer les doublons d'un calcul

ex.

Colonne 1/07-5794/07-5794/07-5766/07-8423/07-4259

Colonne 2/00:59:59/00:48:22/00:42:48/00:51:47/00:52:12

Je peux obtenir la moyenne de la colonne 2 mais je ne veux pas que les valeurs identiques dans la colonne 1 soient calculées deux fois (07-5794) ???

+0

Pouvez-vous expliquer un peu plus ce que vous essayez de faire? Est-ce que vous faites simplement la moyenne de tous les temps dans la colonne 2?Quel est le but de la colonne 1? –

+0

Salut Je suis la moyenne des temps dans la colonne 2, mais j'ai besoin de la colonne un parce que c'est ainsi que les données sont tirées en fonction des critères de recherche de la base de données. –

+0

Jusqu'à présent (SELECT distinct (Inc.INCNUM) DE Incid Inc où = Inc.ID) Champ alias SQL est "Inc.INCNUM" Table alias sql est "Inc" le problème est que les images fixes en double apparaît et la moyenne utilise toujours cette ligne. Est-ce que je dois peut-être mettre quelque chose dans ce que dit utiliser pour calculer? merci –

Répondre

1

Pour obtenir la moyenne des valeurs minimales pour chaque incnum, vous pouvez écrire ce SQL

select avg(min_time) as avg_time from 
    (select incnum, min(col2) as min_time from inc group by incnum) 

en utilisant la fonction moyenne correcte pour votre marque de SQL.

Si vous faites cela dans Access, vous voudrez le coller dans la vue SQL; Lorsque vous utilisez une sous-requête, vous ne pouvez pas le faire directement en mode Création.

0

SELECT DISTINCT()

ou

GROUP BY()

ou

SELECT UNIQUE()

... mais généralement des moyennes ont doublons inclus. Dites-moi que ce n'est pas pour les logiciels financiers, je ne vais pas pour another abuse of statistics!

+0

Je * pense * 'UNIQUE' est Oracle seulement, mais ce ne peut pas être le cas – warren

+0

nlucaroni soyez assuré que ce n'est pas pour les finances ... je suis juste un novice à cela et je ne sais pas comment faire cela. –

0

Voulez-vous éliminer toutes les entrées qui sont des doublons? C'est-à-dire, si aucune des lignes avec "07-5794" ne doit être incluse dans le calcul. Si tel est le cas, je pense que cela fonctionnerait (dans Oracle au moins):

SELECT AVG(col2) 
    FROM (
    SELECT col1, MAX(col2) AS col2 
     FROM table 
     GROUP BY col1 
     HAVING COUNT(*) = 1 
) 

Cependant, si vous souhaitez conserver un des doublons, vous devez spécifier comment choisir laquelle garder.

0

Anastasia,

En supposant que vous avez le calcul de la moyenne et une clé unique dans la table, vous pourriez faire quelque chose comme ça pour obtenir que la dernière occurrence du calendrier pour chaque résultat 07-xxx unique:

select Column1, Avg(Convert(decimal,Column2)) 
from Table1 
where TableId in 
(
select Max(TableId) 
from Table1 
group by Column1 
) 
group by column1 

Ce assumait la structure de tableau suivant dans MS SQL:

CREATE TABLE [dbo].[Table1] (
[TableId] [int] IDENTITY (1, 1) NOT NULL , 
[Column1] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , 
[Column2] [int] NULL) ON [PRIMARY] 

Bonne chance!

Questions connexes