MySQL如何计算发票上的重复项?

时间:2014-08-20 22:50:49

标签: mysql sql group-by

考虑下表:

id, invoice_number, item_number,  qty,  price
1   5000            200           1     4.50 
2   5000            201           2     5.50
3   5000            201           1     5.75 
2   5000            202           1     5.50
3   5000            202           1     5.75 
4   5000            203           1     6.00

如何获得以下结果:

invoice, item, count
5000,    200,    1
5000,    201,    2    
5000,    202,    2
5000,    203,    1

我知道我可以按发票编号分组,但是我不能简单地计算发票,否则我将失去他们的名字。另外我想知道他们是否有不同的价格,即使它只是一个标志,但是我想要获得那么详细的细节我也可以把它放在一个脚本中并循环遍历这些项目,它只是我的数据集非常大,而且喜欢用纯SQL做它:)

提前致谢!

1 个答案:

答案 0 :(得分:2)

获得您想要的确切输出:

select invoice_number, item_number, count(*)
  from tbl
 group by invoice_number, item_number

要获得所需的输出以及组内唯一价格的数量,以及这些价格是多少:

select invoice_number,
       item_number,
       count(*) as num_rows,
       count(distinct price) as num_prices,
       group_concat(distinct price) as prices
  from tbl
 group by invoice_number, item_number