在SQL中,為什么SELECT語句中的所有non-aggregated列都應包含在GROUP BY中?

我看到一條語句,上面寫著“當使用聚合函數(COUNT(),CASE表示條件邏輯)時,GROUP BY子句應該包括所有non-aggregated列,這些列都是selected.”,這是什么原因?

例如,我有一個查詢,其中這是不正確的:

select 
e.first_name, 
e.last_name, 
count(o.order_id) as num_orders, 
(case when shipped_date <= required_date then 'On Time' else 'Late' end) 
as shipped
from employees e
join orders o on e.employee_id = o.employee_id
group by e.employee_id
order by last_name, first_name, num_orders Desc

但這是正確的:

select 
e.first_name, 
e.last_name, 
count(o.order_id) as num_orders, 
(case when shipped_date <= required_date then 'On Time' else 'Late' end) 
as shipped
from employees e
join orders o on e.employee_id = o.employee_id
group by e.first_name,e.last_name,shipped
order by last_name, first_name, num_orders Desc
? 最佳回答:

在您的情況下,如果有兩個不同的姓氏分配給同一個員工ID,您希望數據庫在按員工ID分組后返回哪個姓氏?

這就是為什么SQL要求SELECT語句中不屬于聚合函數的所有列都必須包含在GROUP BY子句中,以確保結果集中的每一行都是唯一定義的,并確保SQL查詢在邏輯上是一致和明確的。

主站蜘蛛池模板: 亚洲AⅤ无码一区二区三区在线 | 日韩精品一区二区三区大桥未久| 亚洲一区二区三区首页| 一区二区三区国模大胆| 亚洲国产欧美国产综合一区| 波多野结衣高清一区二区三区| 中文字幕精品一区二区2021年| 久久久无码精品国产一区| 波多野结衣精品一区二区三区| av一区二区三区人妻少妇| 精品无码一区二区三区爱欲九九| 中文字幕一区二区三区视频在线| 精品理论片一区二区三区| 精品国产一区二区三区免费看| 亚洲AV成人一区二区三区在线看| 中文字幕在线一区二区在线 | 精品视频一区二区三区在线播放| 国产香蕉一区二区三区在线视频| 中文字幕日韩丝袜一区| 国产精品夜色一区二区三区| 91亚洲一区二区在线观看不卡| 人妻AV一区二区三区精品| 久久精品亚洲一区二区| 日韩精品乱码AV一区二区| 男女久久久国产一区二区三区| 亚洲av无码一区二区三区观看| 日本无卡码一区二区三区| 亚洲国产AV无码一区二区三区| 无码少妇丰满熟妇一区二区| 爆乳无码AV一区二区三区| 波多野结衣在线观看一区二区三区 | 成人无码AV一区二区| 日产亚洲一区二区三区| 精品国产福利一区二区| 亚洲AV无码国产一区二区三区| 综合人妻久久一区二区精品| 视频一区二区三区人妻系列| 久久精品国产一区二区电影| 国产一区二区三区久久精品| 精品无码一区二区三区亚洲桃色 | 精品久久国产一区二区三区香蕉 |