【问题标题】:Found most pair product in a transaction在交易中找到最多的配对产品
【发布时间】:2021-01-13 13:46:27
【问题描述】:

我试图从交易表中检索一次交易中出现最多的配对产品

表格包含:

  • row_id = 作为主键
  • kode_transaksi = 交易 ID
  • kode_pelanggan = 客户 ID
  • no_urut = 交易序列
  • kode_produk = 产品 ID
  • nama_produk = 产品名称
  • qty = 购买次数
  • harga = 每单位价格

结果必须包含大多数配对产品中的产品 1 的名称和产品 2 的名称,其中名称必须升序,并且配对产品的交易次数

这是我试过的地方

select 
        *,
        max(tab1.total) 
from
    (
        select
            tp.kode_transaksi as kode_transaksi,
            tp.kode_produk,
            tp.nama_produk,
            tp.qty,
                sum(tp.qty) as total
        from tr_penjualan tp
        group by tp.kode_produk 
    ) tab1
left join
    (
        select
            tp2.kode_transaksi as kode_transaksi,
            tp2.kode_produk,
            tp2.nama_produk,
            tp2.qty,
            sum(tp2.qty) as total
        from tr_penjualan tp2
        group by tp2.kode_produk 
    ) tab2
 on tab1.kode_produk = tab2.kode_produk
group by tab1.kode_produk
having tab1.kode_produk = tab2.kode_produk
order by tab1.kode_transaksi;

我被卡住了,因为不知道在交易中合并这对。 谢谢之前

【问题讨论】:

  • 请提供样本数据和所需的输出
  • @eshirvana 我上传图片
  • 我还是不清楚你想达到什么目标,你是想找到最常一起购买的产品吗?
  • @eshirvana 完全正确
  • @AhmadRoyhan - 您可以粘贴可重用的 sql 代码而不是屏幕截图吗?

标签: mysql sql join


【解决方案1】:

如果我理解正确的话,这里有一种方法可以找出哪些情侣产品一起购买的次数最多:

select tp1.kode_produk 
     , tp2.kode_produk 
     , count(*) boughttogether
from tr_penjualan tp1
inner join tr_penjualan tp2
    on tp1.kode_transaksi = tp2.kode_transaksi
    and tp1.kode_produk <> tp2.kode_produk
group by 
    tp1.kode_produk 
  , tp2.kode_produk 
order by count(*) desc

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-07
    相关资源
    最近更新 更多