ash*_*hka 5 sql group-by having
我对SQL有点新鲜; 我有单表产品:
maker model type
A 1232 PC
A 1233 PC
A 1276 Printer
A 1298 Laptop
A 1401 Printer
A 1408 Printer
A 1752 Laptop
B 1121 PC
B 1750 Laptop
C 1321 Laptop
D 1288 Printer
D 1433 Printer
E 1260 PC
E 1434 Printer
E 2112 PC
E 2113 PC
Run Code Online (Sandbox Code Playgroud)
我需要选择制造商的类型,制造商有超过1个型号但所有这些型号都是单一类型.所以输出应该是
maker type
D Printer
Run Code Online (Sandbox Code Playgroud)
当我只通过制造商执行分组时一切正常,但是当使用制造商和类型=一切都出错时:(是否可以通过单个列执行组但输出中有2个?没有类型的正确响应返回下一个查询:
Select maker from product
group by maker
having count(model)>1
and count(distinct type)=1
Run Code Online (Sandbox Code Playgroud)
但是当我选择制造商时,键入 - 它出错了:(当使用选择制造商,类型和按制造商分组,类型时也是错误的
花了大约4个小时来解决这个问题,非常感谢您的帮助,提前致谢!
要回答这个问题,除非有某种分析,否则不能在选择中包含不在分组中的列.您必须使用分析来告诉Oracle如何处理多行.
鉴于您保证只有一种类型,简单的最大值是安全的.
SELECT maker, MAX(TYPE) AS type
FROM product
GROUP BY maker
HAVING COUNT(MODEL) > 1 AND COUNT(DISTINCT TYPE) = 1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
822 次 |
| 最近记录: |