Lum*_*mpy 2 sql-server-2008 t-sql
我正在处理一个 sql 查询,它需要根据特定列的值获取记录的百分比。百分比由用户给出。查询的精简版本如下
SELECT OrganizationID,
CustomerID,
OrderID
FROM x
Run Code Online (Sandbox Code Playgroud)
输出看起来像
OrganizationID, CustomerID, OrderID
123 abc p456
123 cba p457
123 bac p458
456 def p987
456 efd p988
Run Code Online (Sandbox Code Playgroud)
我需要能够为每个组织 ID 提取 50% 的输出。所以在这个例子中,我会返回 2-3 条记录。只要提取正确百分比的记录,哪些记录并不重要。
关于如何解决这个问题的任何想法?
;WITH CTE
AS (SELECT OrganizationID,
CustomerID,
OrderID,
COUNT(*) OVER (PARTITION BY OrganizationID) AS C,
ROW_NUMBER() OVER (PARTITION BY OrganizationID
ORDER BY (SELECT 0)) AS RN
FROM YourTable)
SELECT OrganizationID,
CustomerID,
OrderID
FROM CTE
WHERE RN <= CEILING(0.5 * C)
Run Code Online (Sandbox Code Playgroud)