【发布时间】:2016-03-14 14:30:29
【问题描述】:
我有一张桌子,里面有一些列。我想编写一个遍历每一行的查询,并找到与所选行中的列匹配的所有行的总数,并找到与 2 列匹配的所有行的计数。有了这两个值,我想找到百分比差异并将它们打印为 column1, percent(query1(column2)/query2(column2 and column3))。
下面是我写的查询
SELECT DISTINCT (t2.column1)
,(
SELECT count(DISTINCT column2)
FROM table1 t1
WHERE t1.column1 = t2.column1
ORDER BY column2
) AS total_count
,(
SELECT count(DISTINCT column2)
FROM table1 t1
WHERE t1.column1 = t2.column1
AND column3 IN (
10
,20
)
ORDER BY column1
,column2
,column3
) AS column3_count
FROM table1 t2;
上述查询有效,但处理时间较长。
我想要它
SELECT DISTINCT (column1)
,percentage(query1 that matches ALL rows WITH column1 / query2 that match ALL rows WITH column1
AND SOME other CONSTRAINT)
FROM TABLE t1
我也想优化上面的查询。请告诉我
谢谢
【问题讨论】:
标签: sql sql-server