gpt4 book ai didi

SQL:在 group by 中按单列选择两列,只有条件

转载 作者:行者123 更新时间:2023-12-04 19:03:15 26 4
gpt4 key购买 nike

我对 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

我需要按具有 1 个以上模型的制造商选择类型,但所有这些模型都是单一类型。所以输出应该是
maker  type
D Printer

当我仅按 maker 执行分组时,一切正常,但是当同时使用 maker 和 type = 时,一切都会出错:(
是否可以按单列执行分组但输出为 2?
没有类型的正确响应返回下一个查询:
Select maker from product
group by maker
having count(model)>1
and count(distinct type)=1

但是当我选择制造商时,输入 - 它出错了:(
使用 select maker,type 和 group by maker,type 时也是错误的

花了大约 4 个小时来解决这个问题,非常感谢您的帮助
提前致谢!

最佳答案

要回答这个问题,您不能在选择中包含不在分组中的列,除非它具有某种分析。您必须使用分析来告诉 Oracle 如何处理多行。

鉴于您保证只有一种类型,一个简单的最大值将是安全的。

SELECT maker, MAX(TYPE) AS type
FROM product
GROUP BY maker
HAVING COUNT(MODEL) > 1 AND COUNT(DISTINCT TYPE) = 1

关于SQL:在 group by 中按单列选择两列,只有条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31571306/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com