我使用以下mysql查询,认为它会给我一个按给定字段分组的唯一行表。我最终得到了几行,其中按字段分组是重复的,但唯一的ID和计数是唯一不同的东西。
有数万行,但只有几百行重复,但在字段中没有明显差异。可能导致这种情况的原因是什么?
CREATE TABLE group_avg_product_prices AS
SELECT group_id,
feature_1,
feature_2,
feature_3,
AVG(price) AS avg_price,
count(*) AS sample_count,
GROUP_CONCAT(unique_id SEPARATOR ",") AS items
FROM products_table
GROUP BY group_id,
feature_1,
feature_2,
feature_3
返回类似于:
的行asdf123 | 2 | 1| .5| 2.65| 3| id1,id2,id3
asdf123 | 2 | 1| .5| 2.34| 2| id4,id5
它让我疯了,我找不到任何理由为什么会这样做。
提前感谢您的帮助。
答案 0 :(得分:1)
根据您的示例数据,第四列是数字。它可能看起来像,但是值可能不同,例如0.499999和0.500001。
我的建议是使用format()
- 在输出上,以便您可以看到差异,或在查询本身。例如,要将具有相似值的两行组合到第一个小数位:
SELECT group_id, feature_1, feature_2,
format(feature_3, 1) as feature_3,
AVG(price) AS avg_price,
count(*) AS sample_count,
GROUP_CONCAT(unique_id SEPARATOR ',') AS items
FROM products_table
GROUP BY group_id, feature_1, feature_2,
format(feature_3, 1);