我正在创建一个市场,我希望有这样的不同类型的统计数据:
限制表的创建我正在考虑这个独特的表结构:
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;
这个表结构是否足以获得之前写入统计信息类型所需的所有参数?
答案 0 :(得分:0)
所有这些都可以通过您提出的表格结构来实现。我已经包含了示例查询 - 它们只返回ID,因为我对数据库中的其他表一无所知。我希望我已经理解了你想要查询的内容 - 如果没有,请告诉我。
<强> 1。产品更畅销
此查询显示购买的前10个产品
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。用户最近的产品boughts
此查询显示用户1购买的10个最新产品:
SELECT
id_product
FROM
order_stats
WHERE
order_stats.id_user = 1
ORDER BY
date_ord DESC
LIMIT 10;