0

在 MySql DB 我有

 CustomerId  productId  modelNumber
  CAnWgsN0    C9407R       300     
  CAnWgsN0    C5861W       300       
  CAnWgsN0    C9407R       400       
  CAnWgsN0    C5861W       600       
  CAnWgsN0    C9407R       300       
  KAuK9nB     K3150Z       100       
  KAuK9nB6    K3150Z       100       

我希望我的输出为

customerId   productId   modelNumber  Count
 CAnWgsN0     C9407R        300         2
 CAnWgsN0     C9407R        400         1
 CAnWgsN0     C5861W        300         1
 CAnWgsN0     C5861W        600         1
 KAuK9nB6     K3150Z        100         2

我正在尝试使用此查询,但没有得到想要的结果。如何在modelNumber上应用 distinct然后按productId分组。

SELECT  *
FROM    (SELECT customerId, productId, COUNT(modelNumber) As count, 
                ROW_NUMBER() OVER (PARTITION BY modelNumber ORDER BY productId) AS RowNumber
         FROM   customers) AS a
WHERE   a.RowNumber <=100 ;

它只返回一行。我也尝试过这个查询,但没有运气

SELECT productId, customerId, modelNumber, COUNT(modelNumber) AS count
FROM customers
WHERE modelNumber IN (SELECT DISTINCT modelNumber from customer ORDER BY productId);

4

1 回答 1

0

除非我错过了什么,否则你只想GROUP BY customerId, productId, modelNumber

WITH customers AS (
  (SELECT 'CAnWgsN0' AS customerId, 'C9407R' AS productId, 300 AS modelNumber ) UNION ALL
  (SELECT 'CAnWgsN0', 'C5861W', 300) UNION ALL
  (SELECT 'CAnWgsN0', 'C9407R', 400) UNION ALL
  (SELECT 'CAnWgsN0', 'C5861W', 600) UNION ALL
  (SELECT 'CAnWgsN0', 'C9407R', 300) UNION ALL
  (SELECT 'KAuK9nB6', 'K3150Z', 100) UNION ALL
  (SELECT 'KAuK9nB6', 'K3150Z', 100))

SELECT customerId, productId, modelNumber, COUNT(*) AS count
FROM customers
GROUP BY customerId, productId, modelNumber;
于 2021-12-02T19:56:58.710 回答