gpt4 book ai didi

mysql - 多聚合sql查询函数

转载 作者:行者123 更新时间:2023-11-29 23:23:19 24 4
gpt4 key购买 nike

我有以下查询:

SELECT u.username, t.pack_id, COUNT( t.id ) transaction_count
FROM `transaction` t
INNER JOIN `user` u ON t.customer_id = u.id
GROUP BY (
t.customer_id
)
HAVING transaction_count >1

我正在尝试获取 transaction_count > 1 的所有用户的用户名和交易创建的第一笔交易的数量为 3,我想要得到这样的列表:

username:
transaction1
transaction2

username2:
transaction3
transaction4
transaction5

这可能吗?我的交易表如下所示:

enter image description here

这是我的用户表:

enter image description here

最佳答案

你无法从 MySQL 获得这样的输出,最接近的可能是:

user1 trans1
user1 trans2
user1 trans3
user1 trans4
user2 trans1
user2 trans2
user2 trans3

要做到这一点,就像您所做的那样,只需简单的内部联接即可。但是,要应用您想要的这两个条件,它会变得有点复杂

SELECT ux.*,tx.* FROM
(
SELECT u.*,count(t1.id) as transaction_count FROM users u
INNER JOIN transaction t1 ON t1.customer_id = u.id
INNER JOIN (
SELECT s1.customer_id,MIN(s1.created) as min_date
FROM transaction s1
GROUP BY s1.customer_id
) t2 ON t2.customer_id = u.id
INNER JOIN transaction t3 ON t3.customer_id = u.id AND t3.created = t2.min_date AND t3.quatity>3
GROUP BY u.id
HAVING count(t1.id)>3
) ux
INNER JOIN transaction tx ON tx.customer_id = ux.id
ORDER BY ux.id,tx.id

简短说明:

子查询 t2 中的事务 s1 用于查找每个用户的第一笔事务的日期

交易 t3 用于按第一笔交易中的数量过滤用户(感谢 t2.min_date)

事务t1用于计算每个用户的事务数(并在having子句中过滤3个或更少的事务)

子查询ux保存符合这两个条件的用户

交易 tx 最终将每个用户的交易添加到输出中

<小时/>

编辑:我的错误,我以为你想要 transaction_count>3 条件,但我看到你输入了 transaction_count>1 ;没什么大不了的,查询只是简单了一行,无论如何,这个条件都是由 INNER JOIN t3 处理的(INNER JOIN 不会传递没有匹配交易的用户),因此我将使用交易 t1 只是将交易计入 transactions_count 列

SELECT ux.*,tx.* FROM
(
SELECT u.*,count(t1.id) as transaction_count FROM users u
INNER JOIN transaction t1 ON t1.customer_id = u.id
INNER JOIN (
SELECT s1.customer_id,MIN(s1.created) as min_date
FROM transaction s1
GROUP BY s1.customer_id
) t2 ON t2.customer_id = u.id
INNER JOIN transaction t3 ON t3.customer_id = u.id AND t3.created = t2.min_date AND t3.quatity>3
GROUP BY u.id
) ux
INNER JOIN transaction tx ON tx.customer_id = ux.id
ORDER BY ux.id,tx.id

关于mysql - 多聚合sql查询函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27144007/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com