J'ai 2 table pour enregistrer des données. Par exemple, vous vous êtes connecté, vos informations sont enregistrées dans le tableau1. Lorsque vous vous êtes connecté à la deuxième fois, vos informations sont enregistrées dans le tableau 1 et vos informations d'ouverture précédentes se situent dans Tableau2. Les tables ont trop de lignes. Pour conclure, je souhaite obtenir le nombre d'utilisateurs différents se sont connectés avec l'adresse IP donnée pour les 60 derniers jours. IP est l'entrée pour la déclaration SQL. Cependant, j'ai un problème de performance dans ma requête SQL. (deux table ont la même structure et veuillez ignorer l'indexation de vos suggestions) em> est également le moyen d'obtenir TOTCOUNT en utilisant sans distinct et un autre mot clé de sélection.
Merci Voici mon SQL: P> select distinct count(*) over() as totCount
into p_differentCustomerCount
from (
select t1.customerNo,t1.customerIp,t1.lastlogindate from table1 t1
union all
select t2.customerNo,t2.customerIp,t2.lastlogindate from table2 t2
)t
where t.lastlogindate > sysdate - 60
and t.customerIp= "IP_As_Input"
group by customerNo;
3 Réponses :
Je veux obtenir le nombre d'utilisateurs différents se sont connectés avec la même adresse IP depuis 60 jours. P>
Vous semblez vouloir: p>
xxx pré> Je ne sais pas pourquoi vous avez un filtre sur la propriété intellectuelle. Il n'est pas mentionné dans le texte. P> blockquote>
IP est transmis comme entrée sur la requête SQL. Je dois donc l'utiliser.
Vous devez connaître le numéro quelque chose comme ceci: p> acclamations !! p> p> code> d'utilisateurs distincts qui se sont connectés avec la même adresse IP. Donc, ma suggestion serait d'utiliser directement
où la clause CODE>. Pas sur la vue intérieure.
Je veux obtenir le nombre d'utilisateurs différents se sont connectés avec la même adresse IP depuis 60 jours. P>
Il apparaît que vous souhaitez utiliser
compter (Customerno distinct) code>, pas
Nombre distinct (*) code>: p>
SELECT SUM(RN) AS CUSTOMER_COUNT FROM (SELECT ROW_NUMBER() OVER (PARTITION BY z.CUSTOMER_NO) AS RN FROM (SELECT * FROM TABLE1 UNION ALL SELECT * FROM TABLE2) z WHERE z.CUSTOMERIP = 'wh.at.ev.ah' AND z.LASTLOGINDATE > SYSDATE - INTERVAL '60' DAY HAVING RN = 1)
Jarvis - réintégrer, oui c'est vrai mais je dois le résoudre par 3 Sélectionner une déclaration
Supprimer le
Union tout code>. Ça ne fait rien. Votre description mentionne deux tables, mais votre requête ne fait que références une.
Voulez-vous Le nombre d'utilisateurs différents se sont connectés avec la même adresse IP i> pour chaque IP? Ou est-ce juste le nombre total? Clarifier ce que vous voulez.