Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL数据库查询基本问题_Sql_Database_Aggregate Functions - Fatal编程技术网

SQL数据库查询基本问题

SQL数据库查询基本问题,sql,database,aggregate-functions,Sql,Database,Aggregate Functions,关系模式: 员工(枚举,Ename) VentingMac(枚举、Cokename、日) VentingMac关系中的属性Enum是一个外键,引用关系Employee 我想列出所有员工的名字(Ename),他们在同一天喝了超过3杯(不同的)可乐 (假设他们不会每天喝相同的可乐) 用于 使用联接: 崩溃 查询的核心在于检查VENTINGMAC表,特别是使用聚合函数(这意味着需要GROUPBY子句)。我假设VENTINGMAC.day只包含一个日期(年、月、日)——没有时间部分来使事情复杂化。您

关系模式:

  • 员工(枚举,Ename)
  • VentingMac(枚举、Cokename、日)
VentingMac关系中的属性
Enum
是一个外键,引用关系Employee

我想列出所有员工的名字(Ename),他们在同一天喝了超过3杯(不同的)可乐 (假设他们不会每天喝相同的可乐)

用于 使用联接: 崩溃
查询的核心在于检查VENTINGMAC表,特别是使用聚合函数(这意味着需要GROUPBY子句)。我假设
VENTINGMAC.day
只包含一个日期(年、月、日)——没有时间部分来使事情复杂化。您需要根据表中的人员和日期分组,以便能够计算
coke
值,就像您在
HAVING
子句中看到的那样。

hmm。。。这闻起来像是一个家庭作业问题。事实上,我很确定我去年在DB管理课上遇到了几乎完全相同的问题。我不明白为什么你接受了一个使用内置聚合函数的答案,当你说你不能使用一个时…????是的,很抱歉这是我的一个错误,我们可以使用它。我想我应该编辑一下。对不起,误会了
SELECT e.ename
  FROM EMPLOYEE e
 WHERE EXISTS(SELECT NULL
                FROM VENTINGMAC vm
               WHERE vm.enum = e.enum
            GROUP BY vm.day, vm.enum
              HAVING COUNT(vm.coke) > 3)
SELECT e.ename
  FROM EMPLOYEE e
 WHERE e.enum IN (SELECT vm.enum
                    FROM VENTINGMAC vm
                GROUP BY vm.day, vm.enum
                  HAVING COUNT(vm.coke) > 3)
SELECT e.ename
  FROM EMPLOYEE e
  JOIN (SELECT vm.enum
          FROM VENTINGMAC vm
      GROUP BY vm.day, vm.enum
        HAVING COUNT(vm.coke) > 3) y ON y.enum = e.enum