2019-07-25

老版结构:
SELECT IF(B.年龄<=20,"20岁及其以下",IF(B.年龄<=30,"21-30岁",IF(B.年龄<=40,"31-40岁","40岁以上"))) AS 年龄分组,
count(A.用户ID) AS 购买用户数
FROM 订购明细 AS A ,用户明细 AS B
WHERE A.用户ID = B.用户ID
GROUP BY IF(B.年龄<=20,"20岁及其以下",IF(B.年龄<=30,"21-30岁",IF(B.年龄<=40,"31-40岁","40岁以上")));

优化语句

ALTER TABLE 订购明细 ADD INDEX (用户ID);
ALTER TABLE 用户明细 ADD INDEX (用户ID);

新版结构 JOIN ON
SELECT IF(B.年龄<=20,"20岁及其以下",IF(B.年龄<=30,"21-30岁",IF(B.年龄<=40,"31-40岁","40岁以上"))) AS 年龄分组,
count(A.用户ID) AS 购买用户数
FROM 订购明细 AS A JOIN 用户明细 AS B ON A.用户ID = B.用户ID
GROUP BY IF(B.年龄<=20,"20岁及其以下",IF(B.年龄<=30,"21-30岁",IF(B.年龄<=40,"31-40岁","40岁以上")));

你可能感兴趣的:(2019-07-25)