我正在创建一个市场,我希望有这样的不同类型的统计数据:
为了限制表的创建,我考虑了这个独特的表结构:
CREATE TABLE IF NOT EXISTS `order_stats` (
`id_order` int(11) NOT NULL,
`id_product` int(11) NOT NULL,
`id_seller` int(11) NOT NULL,
`id_user` int(11) NOT NULL,
`id_cat` int(11) NOT NULL,
`id_subcat` int(11) NOT NULL,
`id_type` int(11) NOT NULL,
`date_ord` datetime NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;此表结构是否足以获得统计数据类型之前写入所需的所有参数?
发布于 2013-11-21 22:50:58
所有这些都可以通过您提议的表结构来实现。我包含了示例查询--它们只返回in,因为我不知道数据库中的其他表。我希望我已经理解了你想要的查询--如果没有,请告诉我。
1.产品更多地销售
此查询显示购买前十名产品。
SELECT
COUNT(*), id_product
FROM
order_stats
GROUP BY
id_product
ORDER BY
COUNT(*) DESC
LIMIT 10;2.各类产品更多地销售
此查询显示了所购买产品的前十大类。
SELECT
COUNT(*), id_cat
FROM
order_stats
GROUP BY
id_cat
ORDER BY
COUNT(*) DESC
LIMIT 10;3.购买此产品的用户甚至购买了该产品的
此查询显示还购买产品ID 2的用户购买的产品ID:
SELECT DISTINCT
id_product
FROM
order_stats
WHERE
order_stats.id_user IN (SELECT id_user FROM order_stats WHERE id_product = 2)
AND
order_stats.id_product != 2;4.用户喜欢的产品类别
此查询显示了用户1购买的前10类产品:
SELECT
COUNT(*), id_cat
FROM
order_stats
WHERE
order_stats.id_user = 1
GROUP BY
id_cat
ORDER BY
COUNT(*) DESC
LIMIT 10;5.用户最近的产品采购
此查询显示用户1最近购买的10种产品:
SELECT
id_product
FROM
order_stats
WHERE
order_stats.id_user = 1
ORDER BY
date_ord DESC
LIMIT 10;https://stackoverflow.com/questions/20082425
复制相似问题