π ΠΠ°ΠΊ Π½Π°ΠΉΡΠΈ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ SQL: ΠΏΡΠΎΡΡΠΎΠΉ ΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄
ΠΠ»Ρ ΠΏΠΎΠΈΡΠΊΠ° ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π² SQL ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ DISTINCT.
SELECT DISTINCT column_name
FROM table_name;
Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π·Π°ΠΌΠ΅Π½ΠΈΡΠ΅ column_name
Π½Π° ΠΈΠΌΡ ΡΡΠΎΠ»Π±ΡΠ°, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ Π½Π°ΠΉΡΠΈ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, Π° table_name
Π½Π° ΠΈΠΌΡ ΡΠ°Π±Π»ΠΈΡΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ ΡΡΠΎΡ ΡΡΠΎΠ»Π±Π΅Ρ.
ΠΠ΅ΡΠ°Π»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ
ΠΠ°ΠΊ Π½Π°ΠΉΡΠΈ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ SQL
ΠΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ , ΡΠ°ΡΡΠΎ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π½Π°ΠΉΡΠΈ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² ΡΠ°Π±Π»ΠΈΡΠ΅. ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, ΠΊΠΎΠ³Π΄Π° Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π² Π½Π°Π±ΠΎΡΠ΅ Π΄Π°Π½Π½ΡΡ ΠΈΠ»ΠΈ ΠΎΡΡΠΈΠ»ΡΡΡΠΎΠ²Π°ΡΡ ΠΏΠΎΠ²ΡΠΎΡΡΡΡΠΈΠ΅ΡΡ Π·Π°ΠΏΠΈΡΠΈ. Π ΡΠ·ΡΠΊΠ΅ SQL Π΄Π»Ρ ΡΡΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π² ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅. ΠΠ°Π²Π°ΠΉΡΠ΅ Π½Π°ΡΠ½Π΅ΠΌ!
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° DISTINCT
ΠΠ΄ΠΈΠ½ ΠΈΠ· ΡΠ°ΠΌΡΡ ΠΏΡΠΎΡΡΡΡ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² Π½Π°ΠΉΡΠΈ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² SQL - ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° DISTINCT. ΠΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΠ±ΡΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠ΅ ΡΡΡΠΎΠΊΠΈ Π² ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠ΅ΠΌ Π½Π°Π±ΠΎΡΠ΅ Π΄Π°Π½Π½ΡΡ . Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Ρ:
SELECT DISTINCT column_name FROM table_name;
Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²ΡΡΠ΅ Π·Π°ΠΏΡΠΎΡΠ΅ Π·Π°ΠΌΠ΅Π½ΠΈΡΠ΅ column_name Π½Π° ΠΈΠΌΡ ΡΡΠΎΠ»Π±ΡΠ°, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π²Ρ ΠΈΡΠ΅ΡΠ΅ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΈ table_name - Π½Π° ΠΈΠΌΡ ΡΠ°Π±Π»ΠΈΡΡ Π² Π²Π°ΡΠ΅ΠΉ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ . ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ ΡΠ°Π±Π»ΠΈΡΠ° "users" ΡΠΎ ΡΡΠΎΠ»Π±ΡΠΎΠΌ "name", ΡΡΠΎΠ±Ρ Π½Π°ΠΉΡΠΈ Π²ΡΠ΅ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠ΅ ΠΈΠΌΠ΅Π½Π°, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π·Π°ΠΏΡΠΎΡ:
SELECT DISTINCT name FROM users;
ΠΠΏΠ΅ΡΠ°ΡΠΎΡ DISTINCT Π±ΡΠ΄Π΅Ρ ΠΈΡΠΊΠ»ΡΡΠ°ΡΡ ΠΏΠΎΠ²ΡΠΎΡΡΡΡΠΈΠ΅ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠ΅ ΠΈΠΌΠ΅Π½Π°.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ COUNT ΠΈ GROUP BY
ΠΠ½ΠΎΠ³Π΄Π° Π²Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π½Π°ΠΉΡΠΈ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, Π½ΠΎ ΠΈ ΠΏΠΎΡΡΠΈΡΠ°ΡΡ ΠΈΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ COUNT Π² ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠΈ Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ GROUP BY. GROUP BY Π³ΡΡΠΏΠΏΠΈΡΡΠ΅Ρ ΡΡΡΠΎΠΊΠΈ Ρ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ Π² ΡΠΊΠ°Π·Π°Π½Π½ΡΡ ΡΡΠΎΠ»Π±ΡΠ°Ρ , Π° COUNT ΡΡΠΈΡΠ°Π΅Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΡΡΠΎΠΊ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π³ΡΡΠΏΠΏΠ΅. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Ρ:
SELECT column_name, COUNT(column_name) FROM table_name GROUP BY column_name;
ΠΠ΄Π΅ΡΡ ΡΠ°ΠΊΠΆΠ΅ Π·Π°ΠΌΠ΅Π½ΠΈΡΠ΅ column_name Π½Π° ΠΈΠΌΡ ΡΡΠΎΠ»Π±ΡΠ° ΠΈ table_name Π½Π° ΠΈΠΌΡ ΡΠ°Π±Π»ΠΈΡΡ. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π²Ρ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠ»Π±ΡΠ° column_name ΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΡΡΠΎΠΊ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎΠΌΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ROW_NUMBER
ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΡΠ΅Π΄ΠΈ Π²ΡΠ΅Ρ ΡΡΠΎΠ»Π±ΡΠΎΠ², Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ ROW_NUMBER. ΠΠ½Π° ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅Ρ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ Π½ΠΎΠΌΠ΅Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ Π² ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Ρ:
SELECT * FROM (SELECT *, ROW_NUMBER() OVER (PARTITION BY column_name ORDER BY column_name) AS rn FROM table_name) AS sub WHERE rn = 1;
ΠΠ΄Π΅ΡΡ ΡΠ°ΠΊΠΆΠ΅ Π·Π°ΠΌΠ΅Π½ΠΈΡΠ΅ column_name Π½Π° ΠΈΠΌΡ ΡΡΠΎΠ»Π±ΡΠ° ΠΈ table_name Π½Π° ΠΈΠΌΡ ΡΠ°Π±Π»ΠΈΡΡ. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π²Ρ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠ΅ ΡΡΡΠΎΠΊΠΈ ΡΠ°Π±Π»ΠΈΡΡ.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² Π½Π°ΠΉΡΠΈ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² SQL. ΠΠΏΠ΅ΡΠ°ΡΠΎΡ DISTINCT ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΠ±ΡΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠ΅ ΡΡΡΠΎΠΊΠΈ, ΡΡΠ½ΠΊΡΠΈΡ COUNT Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ GROUP BY ΠΏΠΎΠ΄ΡΡΠΈΡΡΠ²Π°Π΅Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΡΡΠΎΠΊ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΈ ΡΡΠ½ΠΊΡΠΈΡ ROW_NUMBER ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠ΅ ΡΡΡΠΎΠΊΠΈ ΡΡΠ΅Π΄ΠΈ Π²ΡΠ΅Ρ ΡΡΠΎΠ»Π±ΡΠΎΠ². ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΡΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π²Π°ΡΠΈΡ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΠ΅ΠΉ ΠΈ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ.
Π£ΡΠΏΠ΅Ρ ΠΎΠ² Π² ΡΠ°Π±ΠΎΡΠ΅ Ρ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ Π² SQL!