我遇到一个问题,当在product_view表上获取查询结果时,我还想获得查询结果中每个月的产品月份总数(来自product_month列)。
如果我这样做了一个查询:
SELECT * FROM product_view
WHERE product_price BETWEEN 945 AND 980;
并且product_view表包含如下数据:
INSERT INTO product_view
(`product_id`, `product_month`, `product_price`)
VALUES
(4, 'DEC', 999),
(4, 'FEB', 905),
(4, 'JAN', 905),
(8, 'DEC', 1049),
(8, 'FEB', 955),
(8, 'JAN', 955),
(8, 'DEC', 1049),
(8, 'FEB', 955),
(8, 'JAN', 955),
(22, 'APR', 925),
(22, 'AUG', 969),
(22, 'JUL', 969),
(22, 'JUN', 945),
(22, 'MAR', 925),
(22, 'MAY', 925),
(22, 'OCT', 915),
(22, 'SEP', 945),
(27, 'APR', 1435),
(27, 'JUN', 1459),
(27, 'MAY', 1435),
(27, 'OCT', 1459),
(27, 'SEP', 1459),
(31, 'APR', 3029),
(31, 'AUG', 3029),
(31, 'FEB', 3029);
我不仅希望语句向我提供查询结果,还希望返回结果中每个月的总计数()。即使用上面的查询 - FEB = 2,JUN = 1等...
最终结果 - 重复计数()结果
PRODUCT_ID PRODUCT_MONTH PRODUCT_PRICE Month_count
8 FEB 955 2
8 JAN 955 2
8 FEB 955 2
8 JAN 955 2
22 AUG 969 1
22 JUL 969 1
22 JUN 945 1
22 SEP 945 1
请有人可以告诉我从结果中获取计数()的最佳方法,还有更好的方法来显示这些多重计数,而不会在查询结果的每一行上重复这些结果设置即可。即变量或临时表(虽然临时表中有许多用户同时执行此查询,因此每个用户获得准确结果会出现问题,因为上述查询的product_price BETWEEN值可能会被用户更改)
由于
答案 0 :(得分:0)
我认为您应该使用group by.have查看以下查询。
SELECT product_month,count(product_month) as month,sum(product_price)
FROM product_view
WHERE product_price BETWEEN 945 AND 980
group by(product_month);
答案 1 :(得分:0)
您可以使用GROUP BY product_month:
SELECT product_month, COUNT(*)
FROM product_view
WHERE product_price BETWEEN 945 AND 980
GROUP BY product_month;
这会给你:
PRODUCT_MONTH COUNT(*)
AUG 1
FEB 2
JAN 2
JUL 1
JUN 1
SEP 1
答案 2 :(得分:0)
如果您想要每月产品的总销售量
select product_id, product_month from product_view
group by product_id, product_month;
结果
product_id | product_month
4 | JAN
4 | FEB
14 | JAN
答案 3 :(得分:0)
我认为您应该使用以下查询:
SELECT PRODUCT_ID, PRODUCT_MONTH, PRODUCT_PRICE, COUNT(*)
FROM product_view
WHERE product_price BETWEEN 945 AND 980
GROUP BY PRODUCT_ID, PRODUCT_MONTH, PRODUCT_PRICE;