由于某些原因,如果COUNT是AVG或MIN,此查询有效,但是当我使用COUNT时,我每周都得到相同的结果。我有一张产品SKU表,类别和每周表现。尝试过几次这样做,但我尝试过的每一种方式,每周都会得到相同的结果。
SELECT
category_table.category,
COUNT(rank_table.WK_1),
COUNT(rank_table.WK_2),
COUNT(rank_table.WK_3)
FROM category_table
JOIN rank_table ON
category_table.sku = rank_table.sku
WHERE
rank_table.WK_1 < 999999
AND rank_table.WK_2 < 999999
AND rank_table.WK_3 < 999999
GROUP BY category;
结果如下所示:
1. category-----|---WK_1---|---WK_2---|---WK_3---|
2. hats---------|------100-|------100-|------100-|
3. shirts-------|------150-|------150-|------150-|
4. pants--------|-------50-|-------50-|-------50-|
答案 0 :(得分:1)
在你的方式中,你只是计算行中的非空值的数量,而在内连接中,这个数字可能是相同的。如果您拥有的所有值都不是空值,则可以使用count(distinct ...)来计算不同值的数量
SELECT
category_table.category,
COUNT(distinct rank_table.WK_1),
COUNT(distinct rank_table.WK_2),
COUNT(distinct rank_table.WK_3)
FROM category_table
JOIN rank_table ON
category_table.sku = rank_table.sku
WHERE
rank_table.WK_1 < 999999
AND rank_table.WK_2 < 999999
AND rank_table.WK_3 < 999999
GROUP BY category;