有没有一种方法可以在不使用Count和Group By的情况下确定元素在列中是否至少存在3次?


  编辑:答案是预期的SQL(mysql或oracle11g)在其中
  仅使用SELECT,FROM,WHERE和JOINS。当然,所有的逻辑运算符和量词都是RELATIONAL CALCULUS WITH
  TUPLES根本没有任何工具。
  
  元组示例:
  
  {t:{name} | s:{姓名,工资}(雇员s.wage = 50.000∧t.name = s.name)}
  
  在这里,使用元组的关系演算的局限性显而易见。
  
  没有CTE,没有分组依据,没有行工具,没有区别,没有计数,没有视图,没有创建,没有插入,没有更改。这些出色的SQL工具都没有。


我不想使用Count和Group By的原因是因为我将使用Tuples将其带到关系演算中,后者不允许使用这些工具。

举个例子:

假设有一个表ORDER(Id_article,Id_Provider),其中两个ID都是外键。

查询:获取订购至少3次的所有文章。

令表ORDER为:

   Id_Article      Id_Provider

       1               A
       1               B
       1               B
       2               C
       2               C
       3               A


查询的结果应仅为元素1,因为它是Id_Article中的3倍。

最佳答案

下来知道这是否回答了你的问题。但是oracle有一个row_number功能

在这种情况下,partition_by重新开始对每篇文章进行计数。

SQL Fiddle Demo

WITH CTE AS (
  SELECT    "Id_Article",
            "Id_Provider",
            ROW_NUMBER() OVER
            (PARTITION BY "Id_Article" ORDER BY "Id_Provider")  AS rn
      FROM  Table1
)
SELECT DISTINCT "Id_Article"
FROM CTE
WHERE rn >= 3;

关于mysql - 元素重复至少3次,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32556972/

10-11 13:10