Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/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_Sqlite - Fatal编程技术网

列中的SQL限制

列中的SQL限制,sql,sqlite,Sql,Sqlite,我是SQL的不速之客,目前正在使用SQLite,遇到了一个我似乎无法解决或找到答案的问题(我的深层感觉是,我没有通过谷歌正确地提出这个问题)。对于这里的大多数人来说,这是非常基本的,所以我要先表示歉意,但同时也要说一声“谢谢”。问题就在这里 我有一个社会保障名称文件,我想根据名称、性别和前/后30个事件对其进行解析。当我做下面的代码时,它只会按照字母顺序将前30个男性名字按6次出现的顺序吐回。我跑步的时候也是一样 SELECT * FROM names_1899 WHERE Occurrenc

我是SQL的不速之客,目前正在使用SQLite,遇到了一个我似乎无法解决或找到答案的问题(我的深层感觉是,我没有通过谷歌正确地提出这个问题)。对于这里的大多数人来说,这是非常基本的,所以我要先表示歉意,但同时也要说一声“谢谢”。问题就在这里

我有一个社会保障名称文件,我想根据名称、性别和前/后30个事件对其进行解析。当我做下面的代码时,它只会按照字母顺序将前30个男性名字按6次出现的顺序吐回。我跑步的时候也是一样

SELECT * 
FROM names_1899
WHERE Occurrences BETWEEN '5' AND '6'
AND Sex = 'M' OR 'F'
LIMIT 30
这会带来一些很棒的东西,但不是我不想要的(不是完整的30个列表以节省空间):

理想情况下,我希望它能产生一个类似于上面的列表,其中包括30名男性和30名女性,都是从最上面/最下面的30个事件中选择的

如果我添加一个GROUP BY和ORDER BY,它对我来说也没有意义:

SELECT * 
FROM names_1899
WHERE Occurrences BETWEEN '5' AND '6'
AND Sex = 'M' OR 'F'
GROUP BY Sex
ORDER BY Occurences ASC
LIMIT 30
只需产生顶级男性名字:

Alberto M   6
再一次,提前感谢所有能在这个极其简单的问题上帮助我的人。非常感谢您抽出时间

使用窗口功能:

SELECT n.*
FROM (SELECT n.*, 
             ROW_NUMBER() OVER (PARTITION BY sex ORDER BY sex) as seqnum
      FROM names_1899 n
      WHERE Occurrences BETWEEN 5 AND 6 AND  -- sounds like a number, not a string
            Sex IN ('M', 'F')
     ) n
WHERE seqnum <= 30;
使用窗口功能:

SELECT n.*
FROM (SELECT n.*, 
             ROW_NUMBER() OVER (PARTITION BY sex ORDER BY sex) as seqnum
      FROM names_1899 n
      WHERE Occurrences BETWEEN 5 AND 6 AND  -- sounds like a number, not a string
            Sex IN ('M', 'F')
     ) n
WHERE seqnum <= 30;

这对于评论来说太长了,这也是一种回答:-)

编写查询首先要准确地知道要选择什么。在我看来,您似乎正在尝试在明确规则之前编写查询

假设不是30,而是2个顶部/底部事件,不是30,而是2个您想要选择的男性/女性。这使我们能够创建可以使用的示例数据:

name sex occurrences Albert M 6 Alfred M 6 Bill M 6 Jack M 6 Jane F 5 Jill F 5 Mary F 5 Robert M 2 Sam M 2 Tom M 2 命名性事件 阿尔伯特M 6 阿尔弗雷德M 6 账单M 6 杰克M 6 简F 5 吉尔F 5 玛丽F 5 罗伯特M 2 山姆M 2 汤姆M 2 你看,可以有很多联系。顶部/底部2个引用?有4个顶部,3个底部,甚至不包括任何女性。或者你的意思是每个性别的前/后2名?然后我们会有4只顶级雄性和3只底层雄性。和三个顶级女性,也是三个底层女性

在所有这些行中,你会考虑显示什么?你有什么偏好吗


首先获取算法。然后写下查询。

这对于评论来说太长了,而且,这也是一种回答:-)

编写查询首先要准确地知道要选择什么。在我看来,您似乎正在尝试在明确规则之前编写查询

假设不是30,而是2个顶部/底部事件,不是30,而是2个您想要选择的男性/女性。这使我们能够创建可以使用的示例数据:

name sex occurrences Albert M 6 Alfred M 6 Bill M 6 Jack M 6 Jane F 5 Jill F 5 Mary F 5 Robert M 2 Sam M 2 Tom M 2 命名性事件 阿尔伯特M 6 阿尔弗雷德M 6 账单M 6 杰克M 6 简F 5 吉尔F 5 玛丽F 5 罗伯特M 2 山姆M 2 汤姆M 2 你看,可以有很多联系。顶部/底部2个引用?有4个顶部,3个底部,甚至不包括任何女性。或者你的意思是每个性别的前/后2名?然后我们会有4只顶级雄性和3只底层雄性。和三个顶级女性,也是三个底层女性

在所有这些行中,你会考虑显示什么?你有什么偏好吗


首先获取算法。然后写下查询。

你不认为
按性别排序
只会给出女性。@AnkitBajpai。它没有实际效果,因为
sex
用于分区。有些数据库要求使用order by子句,我习惯于在其中包含一个。@GordonLinoff对不起,我认为我的注释添加到了错误的位置。哈总是有新东西的汤三明治。谢谢你,先生,谢谢你的帮助!非常有帮助,为更多的学习打开了大门。你不认为按性别排序只会给女性带来好处吗。@AnkitBajpai。它没有实际效果,因为
sex
用于分区。有些数据库要求使用order by子句,我习惯于在其中包含一个。@GordonLinoff对不起,我认为我的注释添加到了错误的位置。哈总是有新东西的汤三明治。谢谢你,先生,谢谢你的帮助!非常有帮助,为更多的学习打开了大门。@GordonLinoff谢谢你,先生!这也有助于我深入了解您的语法结构。再次感谢您,先生@戈登林诺夫谢谢你,先生!这也有助于我深入了解您的语法结构。再次感谢您,先生!谢谢你的回复。我试图非常小心地避免你提出的问题。也许我的描述不够清楚。不管是30、2、17还是112,问题是我有问题(规则),但无法用SQL表达出来——或者说,在执行谷歌搜索时。最重要的名字“很容易”识别,因为很多都不是重复出现的,所以说一个名字是“#5”很容易。但是说一个名字是“底部”更难,因为SS系统出于隐私原因在5次出现时停止。因此,有很多5的按字母顺序排列。谢谢你的回复。我试图非常小心地避免你提出的问题。也许我的描述不够清楚。不管是30、2、17还是112,问题是我有问题(规则),但无法用SQL表达出来——或者说,在执行谷歌搜索时。最重要的名字“很容易”识别,因为很多都不是重复出现的,所以说一个名字是“#5”很容易。但是说一个名字是“底部”更难,因为SS系统出于隐私原因在5次出现时停止。因此,有许多5按字母顺序列出。