假设我有以下数据:
object size color units
------ ---- ----- -----
ball small red 3
ball small red 2
ball medium blue 2
ball medium blue 1
ball big yellow 2
hat big green 3
hat big green 4
umbrella medium blue 1
umbrella medium blue 4
umbrella big blue 4
umbrella huge red 2
umbrella huge green 1
book small white 4
book small brown 3
book medium brown 2
我需要一个查询,该查询返回所有对象的所有对象颜色大小变化,其中至少有一个变化的大小和颜色的总单位至少为5,因此该查询将返回以下行:
object size color total_units
------ ---- ----- ------
ball small red 5
ball medium blue 3
ball big yellow 2
umbrella medium blue 5
umbrella big blue 4
umbrella huge red 2
umbrella huge green 1
结果中显示所有球及其每种尺寸颜色变化的总数的原因是,至少有两个不同的球,其中至少一个球的总单位为5或更多
结果中出现所有雨伞及其每种尺寸的总颜色变化的原因是,至少有两种不同的雨伞,其中至少一种雨伞的总单位为5或更多
这个帽子没有出现在结果中的原因是,尽管有超过5个单位(7个)的绿色大帽子,但至少没有两个不同的帽子
没有一本书出现在结果中的原因是,尽管有3本不同的书,但其中至少没有5个单元。
谢谢你向我展示了如何做到这一点!
2条答案
按热度按时间evrscar21#
在派生表中,我们可以确定
Object
值,该值至少有一个以上的组合,并且其中一个组合至少总共有5个单位。联接回主表以仅获取这些行(post
GROUP BY
).查询
结果
db fiddle视图
jdzmm42g2#
使用窗口函数(在mysql和mariadb数据库的最新版本中),这很简单: