我试图编写一个SQL SELECT来为我的sql server中的每个不同的EPISODIO返回最频繁的TIPO_ASSEPSIA。
从我所看到的SELECT技术上起作用(例如:在EPISODIO中有3行,如果两个TIPO_ASSEPSIA相同,它会选择该属性最频繁)但是当我去检查我得到的行数,得到3822行。这可能是正确的,因为如果我计算不同的EPISODIO的数量我得到3897,所以有几十行失踪,我不知道为什么。有什么想法吗?
我使用的代码是以下代码
SELECT DISTINCT
F1.EPISODIO,
F1.TIPO_ASSEPSIA
FROM DWS_DM F1
WHERE
F1.TIPO_ASSEPSIA =
( SELECT t.TIPO_ASSEPSIA from
(
SELECT TOP 1 TIPO_ASSEPSIA , (COUNT(*)) AS freq
FROM DWS_DM F2
WHERE F2. EPISODIO = F1.EPISODIO
GROUP BY F2.TIPO_ASSEPSIA
ORDER BY count(TIPO_ASSEPSIA) DESC)t
)
答案 0 :(得分:1)
SELECT DISTINCT
F1.EPISODIO,
x.TIPO_ASSEPSIA
FROM DWS_DM F1
OUTER APPLY
( SELECT TOP 1 r.TIPO_ASSEPSIA , (COUNT(*)) AS freq
FROM DWS_DM r
WHERE r.EPISODIO = F1.EPISODIO
GROUP BY TIPO_ASSEPSIA
ORDER BY count(TIPO_ASSEPSIA) DESC
) x
答案 1 :(得分:0)
为什么要回复您的F1
别名?我想你想这样做:
SELECT DISTINCT
F1.EPISODIO,
F1.TIPO_ASSEPSIA
FROM DWS_DM F1
WHERE
F1.TIPO_ASSEPSIA =
( SELECT t.TIPO_ASSEPSIA from
(
SELECT TOP 1 TIPO_ASSEPSIA , (COUNT(*)) AS freq
FROM DWS_DM
GROUP BY TIPO_ASSEPSIA
ORDER BY count(TIPO_ASSEPSIA) DESC)t
)