数据量150万条,样表如下:
销售单号 商品20190101 A20190101 B20190101 C20190102 A20190102 C20190103 C20190103 D我写了一段SQL,数据量少还可以,但速度也很慢,数据量上万直接卡死,求大神指点SELECT y.商品编码1, y.商品编码2, COUNT(DISTINCT y1.销售单号) as jsFROM( SELECT A.商品编码 as 商品编码1, B.商品编码 as 商品编码2 FROM (SELECT DISTINCT 商品编码 FROM 销售表) A, (SELECT DISTINCT 商品编码 FROM 销售表) B WHERE A.商品编码 < B.商品编码) y INNER JOIN 销售表 y1 ON y1.商品编码 = y.商品编码1WHERE E销售表ISTS(SELECT * FROM 销售表 y2 WHERE y2.销售单号 = y1.销售单号 AND y2.商品编码 = y.商品编码2)GROUP BY y.商品编码1, y.商品编码2;
销售单号 商品20190101 A20190101 B20190101 C20190102 A20190102 C20190103 C20190103 D我写了一段SQL,数据量少还可以,但速度也很慢,数据量上万直接卡死,求大神指点SELECT y.商品编码1, y.商品编码2, COUNT(DISTINCT y1.销售单号) as jsFROM( SELECT A.商品编码 as 商品编码1, B.商品编码 as 商品编码2 FROM (SELECT DISTINCT 商品编码 FROM 销售表) A, (SELECT DISTINCT 商品编码 FROM 销售表) B WHERE A.商品编码 < B.商品编码) y INNER JOIN 销售表 y1 ON y1.商品编码 = y.商品编码1WHERE E销售表ISTS(SELECT * FROM 销售表 y2 WHERE y2.销售单号 = y1.销售单号 AND y2.商品编码 = y.商品编码2)GROUP BY y.商品编码1, y.商品编码2;
首先,要假定你同一个销售单号里没有2个及以上相同的商品。
其次,我返回的内容,是同一个销售单号中,2件商品和对应的出现次数,按照倒序排列。SELECT
t1.商品编码,
t2.商品编码,
COUNT(0)
FROM
销售表 t1,
销售表 t2
WHERE t1.销售单号 = t2.销售单号
AND t1.商品编码 > t2.商品编码
GROUP BY t1.商品编码,
t2.商品编码
ORDER BY 3 DESC;
select max(num)
from (
select count(商品) as num, 商品
from tableName groupby 商品
)