DENSE_RANK分析函数的使用
突然发现DENSE_RANK是个不错的函数,以前一直以为FIRST_VALUE,LAST_VALUE可以替代 ,但是其实不然.有时候可以用的到大家。 DENSE_RANK 功能描述:根据ORDER BY子句中表达式的值,从查询返回的每一行,计算它们与其它行的相对位置。组内的数据按ORDER BY子句排
突然发现DENSE_RANK是个不错的函数,以前一直以为FIRST_VALUE,LAST_VALUE可以替代 ,但是其实不然.有时候可以用的到大家。
DENSE_RANK
功能描述:根据ORDER BY子句中表达式的值,从查询返回的每一行,计算它们与其它行的相对位置。组内的数据按ORDER BY子句排序,然后给每一行赋一个号,从而形成一个序列,该序列从1开始,往后累加。每次ORDER BY表达式的值发生变化时,该序列也随之增加。有同样值的行得到同样的数字序号(认为null时相等的)。密集的序列返回的时没有间隔的数.
FIRST
功能描述:从DENSE_RANK返回的集合中取出排在最前面的一个值的行(可能多行,因为值可能相等),因此完整的语法需要在开始处加上一个集合函数以从中取出记录
SAMPLE:下面例子中DENSE_RANK按部门分区,再按佣金commission_pct排序,FIRST取出佣金最低的对应的所有行,然 后前面的MAX函数从这个集合中取出薪水最低的值;LAST取出佣金最高的对应的所有行,然后前面的MIN函数从这个集合中取出薪水最高的值
LAST
功能描述:从DENSE_RANK返回的集合中取出排在最后面的一个值的行(可能多行,因为值可能相等),因此完整的语法需要在开始处加上一个集合函数以从中取出记录
SAMPLE:下面例子中DENSE_RANK按雇用日期排序,FIRST取出salary最低的对应的所有行,然后前面的MAX函数从这个集合中取出薪水最低的值;LAST取出雇用日期最高的对应的所有行,然后前面的MIN函数从这个集合中取出薪水最高的值
SELECT
department_id,
first_name||' '||last_name employee_name,
hire_date,
salary,
MIN(salary) KEEP (DENSE_RANK FIRST ORDER BY hire_date) OVER (PARTITION BY department_id) "Worst",
MAX(salary) KEEP (DENSE_RANK LAST ORDER BY hire_date) OVER (PARTITION BY department_id) "Best"
FROM employees
然后再举个使用dense rank的例子,其实在有些特别的场景,比如我说统计部门最高工资里面入职最早员工的信息,dense rank 的first , last函数就非常好实现.
下面例子是求最大最小值的,其实没有完全利用到我刚才说的那个场景.
CREATE TABLE TEST( V1 VARCHAR2(20), V2 VARCHAR2(10), V3 VARCHAR2(10)) ;
Insert into TEST (V1, V2, V3) Values ('1', '1', 'm');
Insert into TEST (V1, V2, V3) Values ('1', '2', 'f');
Insert into TEST (V1, V2, V3) Values ('2', '1', 'n');
Insert into TEST (V1, V2, V3) Values ('2', '2', 'g');
Insert into TEST (V1, V2, V3) Values ('3', '1', 'b');
Insert into TEST (V1, V2, V3) Values ('3', '2', 'a');
Insert into TEST (V1, V2, V3) Values ('1', '3', 'a');
SQL> SELECT t.* ,t.rowid FROM test t order by v1,v2;
V1 V2 V3 ROWID
-------------------- ---------- ---------- ------------------
1 1 m AAASUkAAEAAAAisAAA
1 2 f AAASUkAAEAAAAisAAB
1 3 a AAASUkAAEAAAAisAAG
2 1 n AAASUkAAEAAAAisAAC
2 2 g AAASUkAAEAAAAisAAD
3 1 b AAASUkAAEAAAAisAAE
3 2 a AAASUkAAEAAAAisAAF
怎么实现如下结果:
V1 V3 V3
-------------------- ---------- ----------
1 m a
2 n g
3 b a
------------------------------------------------------------------------------------------------------------
Answer:
select v1
,max(v3) keep (dense_rank first order by v2)
,max(v3) keep (dense_rank last order by v2)
from test
group by v1;
-------------------------------------------------------------------------------------------------------------
SELECT department_id, first_name||' '||last_name employee_name, hire_date, salary, MIN(salary) KEEP (DENSE_RANK FIRST ORDER BY hire_date) OVER (PARTITION BY department_id) "Worst", MAX(salary) KEEP (DENSE_RANK LAST ORDER BY hire_date) OVER (PARTITION BY department_id) "Best" FROM employees
CREATE TABLE TEST( V1 VARCHAR2(20), V2 VARCHAR2(10), V3 VARCHAR2(10)) ; Insert into TEST (V1, V2, V3) Values ('1', '1', 'm'); Insert into TEST (V1, V2, V3) Values ('1', '2', 'f'); Insert into TEST (V1, V2, V3) Values ('2', '1', 'n'); Insert into TEST (V1, V2, V3) Values ('2', '2', 'g'); Insert into TEST (V1, V2, V3) Values ('3', '1', 'b'); Insert into TEST (V1, V2, V3) Values ('3', '2', 'a'); Insert into TEST (V1, V2, V3) Values ('1', '3', 'a'); SQL> SELECT t.* ,t.rowid FROM test t order by v1,v2;
select v1 ,max(v3) keep (dense_rank first order by v2) ,max(v3) keep (dense_rank last order by v2) from test group by v1;

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

MetaMask (également appelé Little Fox Wallet en chinois) est un logiciel de portefeuille de cryptage gratuit et bien accueilli. Actuellement, BTCC prend en charge la liaison au portefeuille MetaMask. Après la liaison, vous pouvez utiliser le portefeuille MetaMask pour vous connecter rapidement, stocker de la valeur, acheter des pièces, etc., et vous pouvez également obtenir un bonus d'essai de 20 USDT pour la première liaison. Dans le didacticiel du portefeuille BTCCMetaMask, nous présenterons en détail comment enregistrer et utiliser MetaMask, ainsi que comment lier et utiliser le portefeuille Little Fox dans BTCC. Qu'est-ce que le portefeuille MetaMask ? Avec plus de 30 millions d’utilisateurs, MetaMask Little Fox Wallet est aujourd’hui l’un des portefeuilles de crypto-monnaie les plus populaires. Son utilisation est gratuite et peut être installée sur le réseau en tant qu'extension

Le langage Go propose deux technologies de création de fonctions dynamiques : la fermeture et la réflexion. les fermetures permettent d'accéder aux variables dans la portée de la fermeture, et la réflexion peut créer de nouvelles fonctions à l'aide de la fonction FuncOf. Ces technologies sont utiles pour personnaliser les routeurs HTTP, mettre en œuvre des systèmes hautement personnalisables et créer des composants enfichables.

Dans la dénomination des fonctions C++, il est crucial de prendre en compte l’ordre des paramètres pour améliorer la lisibilité, réduire les erreurs et faciliter la refactorisation. Les conventions courantes d'ordre des paramètres incluent : action-objet, objet-action, signification sémantique et conformité de la bibliothèque standard. L'ordre optimal dépend de l'objectif de la fonction, des types de paramètres, de la confusion potentielle et des conventions du langage.

La clé pour écrire des fonctions Java efficaces et maintenables est la suivante : restez simple. Utilisez un nom significatif. Gérer des situations particulières. Utilisez une visibilité appropriée.

1. La fonction SOMME permet de sommer les nombres d'une colonne ou d'un groupe de cellules, par exemple : =SOMME(A1:J10). 2. La fonction MOYENNE permet de calculer la moyenne des nombres dans une colonne ou un groupe de cellules, par exemple : =AVERAGE(A1:A10). 3. Fonction COUNT, utilisée pour compter le nombre de nombres ou de texte dans une colonne ou un groupe de cellules, par exemple : =COUNT(A1:A10) 4. Fonction IF, utilisée pour effectuer des jugements logiques basés sur des conditions spécifiées et renvoyer le résultat correspondant.

Les avantages des paramètres par défaut dans les fonctions C++ incluent la simplification des appels, l’amélioration de la lisibilité et l’évitement des erreurs. Les inconvénients sont une flexibilité limitée et des restrictions de dénomination. Les avantages des paramètres variadiques incluent une flexibilité illimitée et une liaison dynamique. Les inconvénients incluent une plus grande complexité, des conversions de types implicites et des difficultés de débogage.

Les avantages des fonctions renvoyant des types référence en C++ incluent : Améliorations des performances : le passage par référence évite la copie d'objets, économisant ainsi de la mémoire et du temps. Modification directe : L'appelant peut modifier directement l'objet de référence renvoyé sans le réaffecter. Simplicité du code : le passage par référence simplifie le code et ne nécessite aucune opération d'affectation supplémentaire.

La différence entre les fonctions PHP personnalisées et les fonctions prédéfinies est la suivante : Portée : les fonctions personnalisées sont limitées à la portée de leur définition, tandis que les fonctions prédéfinies sont accessibles tout au long du script. Comment définir : les fonctions personnalisées sont définies à l'aide du mot-clé function, tandis que les fonctions prédéfinies sont définies par le noyau PHP. Passage de paramètres : les fonctions personnalisées reçoivent des paramètres, tandis que les fonctions prédéfinies peuvent ne pas nécessiter de paramètres. Extensibilité : des fonctions personnalisées peuvent être créées selon les besoins, tandis que les fonctions prédéfinies sont intégrées et ne peuvent pas être modifiées.
