在 SQL 中,DISTINCT
關(guān)鍵字用于返回唯一不同的值。當(dāng)它與聚合函數(shù)(如 COUNT、SUM、AVG 等)一起使用時(shí),它會(huì)對(duì)這些函數(shù)中的每個(gè)唯一值進(jìn)行計(jì)數(shù)或計(jì)算。
以下是一些使用 DISTINCT
與聚合函數(shù)的示例:
SELECT COUNT(DISTINCT column_name) FROM table_name;
例如,如果你有一個(gè)名為 orders
的表,其中包含 customer_id
列,并且你想知道有多少不同的客戶下了訂單,你可以這樣寫:
SELECT COUNT(DISTINCT customer_id) FROM orders;
SELECT SUM(DISTINCT column_name) FROM table_name;
例如,如果你有一個(gè)名為 orders
的表,其中包含 order_amount
列,并且你想知道所有不同訂單金額的總和,你可以這樣寫:
SELECT SUM(DISTINCT order_amount) FROM orders;
AVG(DISTINCT ...)
的語法。在這種情況下,你可能需要使用子查詢或其他方法來計(jì)算平均值。例如,在 MySQL 中,你可以這樣計(jì)算不同訂單金額的平均值:
SELECT AVG(order_amount) FROM (SELECT DISTINCT order_amount FROM orders) AS subquery;
DISTINCT
一起使用,盡管它們的用法可能因數(shù)據(jù)庫系統(tǒng)而異。在使用之前,建議查閱特定數(shù)據(jù)庫系統(tǒng)的文檔。需要注意的是,使用 DISTINCT
與聚合函數(shù)時(shí),查詢的性能可能會(huì)受到影響,特別是在處理大型數(shù)據(jù)集時(shí)。因此,在進(jìn)行優(yōu)化時(shí),請(qǐng)考慮數(shù)據(jù)的分布和查詢計(jì)劃。