0

我有以下声明:

select 
    product_name as ShortestLength = (select top 1 product_name, len(fact_name) Value_Length 
                                      from table 
                                      order by Value_Length, fact_name ASC)

返回此输出:

shortestlength
PS

我想将此结果添加到另一个选择语句中:

select
    'Product' as Column_Name,
    avg(case when product is null then 1.000 else 0 end) * 100 as PctMissing,
    count(product) as TotalCount,
    count(distinct product) as UniqueCount
from 
    table

所以结果将是:

列名 失踪 总数 唯一计数 最短长度
产品 5.100 181186 15 附言

我应该在我的初始选择语句中添加什么?

4

2 回答 2

0

您可以使用条件聚合:

select 'Product' as Column_Name,
        avg(case when t.product is null then 1.000 else 0 end)*100 as PctMissing,
        count(t.product) as TotalCount,
        count(distinct t.product) as UniqueCount,
        max(case when seqnum = 1 then product_name end) as shortest_length
from (select t.*,
             row_number() over (order by len(fact_name), fact_name) as seqnum
      from table t 
     ) t

这假设这两个table引用实际上是同一个表。

于 2021-04-30T14:15:08.273 回答
0

您可以将第一个查询用作子查询来代替 select 语句中的列:

select
    'Product' as Column_Name,
    avg(case when product is null then 1.000 else 0 end)*100 as PctMissing,
    count(product) as TotalCount,
    count(distinct product) as UniqueCount,
(select top 1 product_name from table order by Value_Length, fact_name ASC) as ShortestLength 
from table
于 2021-04-30T14:17:24.100 回答