Sql 按名称从表组中仅选择一半记录

Sql 按名称从表组中仅选择一半记录,sql,sql-server,Sql,Sql Server,我有一张像下面这样的桌子 名字 A. A. B B C C C C C C D D D D 我需要像下面这样放出来 名字 A. B C C C D D您可以使用“行数”和“计数”窗口函数分别获取每个值的运行计数和总计数,然后比较它们: SELECT value FROM (SELECT value, COUNT(*) OVER (PARTITION BY vale) AS cnt, ROW_NUMBER() OVER (PARTI

我有一张像下面这样的桌子

名字 A. A. B B C C C C C C D D D D

我需要像下面这样放出来

名字 A. B C C C D D

您可以使用“行数”和“计数”窗口函数分别获取每个值的运行计数和总计数,然后比较它们:

SELECT value
FROM   (SELECT value, 
               COUNT(*) OVER (PARTITION BY vale) AS cnt,
               ROW_NUMBER() OVER (PARTITION BY value) AS rn
        FROM   mytable) t
WHERE  rn <= (cnt / 2)

请澄清您的具体问题或添加其他详细信息,以突出显示您所需的内容。正如目前所写的,很难准确地说出你在问什么。请参阅“如何询问”页面,以获得澄清此问题的帮助。我需要根据名称从表中输出。如果名称A在表中显示了2次,我需要以相同的方式显示1次,如果名称C有6次,我需要显示3次times@FatemehAbdollahei-如果你知道这个问题是离题的,请不要像问题已关闭一样对其进行编辑,然后按该顺序批准您的编辑,该问题将进入要重新打开的审阅队列。这并不能阻止问题脱离主题;你最好别管它。你可以使用count和group,然后你可以将结果除以N次。