MySQL: 使用 COUNT DISTINCT 计算唯一产品 ID 的数量,根据另一列中显示的值过滤

MySQL: using COUNT DISTINT to count number of unique product ID's, filtered according to value shown in another column

我希望对此有一个非常简单的答案,我只是没有想到...我正在尝试滚动一些销售数据。下面的代码有效,但计算每个产品组(项目)的所有唯一产品 ID(文章 ID),无论它们是否在 NetTY 或 NetLY 列中显示销售额。我想要两条 COUNT DISTINCT 行,一条计算在 NetTY 中显示值的唯一产品,另一条计算在 NetLY 中显示值的唯一产品。

我一直在尝试的代码类型如下: COUNT(DISTINCT s.ArticleID) WHERE s.NetTY >= 1 AS Products ...不用说它没有用:)

SELECT
   a.Item,
   a.Rnge,
   SUM(s.NetTY) AS NetTY,
   SUM(s.NetLY) AS NetLY,
   FORMAT(((SUM(s.NetTY) / SUM(s.NetLY) - 1) * 100), 1) AS vLY,
   COUNT(DISTINCT s.ArticleID) AS Products
FROM
   Articles a
       INNER JOIN
   Salesandstock s ON s.ArticleID = a.ArticleID
GROUP BY
   a.Item,a.Rnge
ORDER BY
   SUM(s.NetTY) DESC;

您可以尝试使用 CASE 语句,但我不确定它是否适合 distinct。我在想这些:

COUNT(DISTINCT (CASE WHEN s.NetTY >= 1 THEN s.ArticleID ELSE null END)) AS Products

希望这对你有用。