- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下查询:
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
这可能吗?我的交易表如下所示:
这是我的用户表:
最佳答案
你无法从 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/
C语言sscanf()函数:从字符串中读取指定格式的数据 头文件: ?
最近,我有一个关于工作预评估的问题,即使查询了每个功能的工作原理,我也不知道如何解决。这是一个伪代码。 下面是一个名为foo()的函数,该函数将被传递一个值并返回一个值。如果将以下值传递给foo函数,
CStr 函数 返回表达式,该表达式已被转换为 String 子类型的 Variant。 CStr(expression) expression 参数是任意有效的表达式。 说明 通常,可以
CSng 函数 返回表达式,该表达式已被转换为 Single 子类型的 Variant。 CSng(expression) expression 参数是任意有效的表达式。 说明 通常,可
CreateObject 函数 创建并返回对 Automation 对象的引用。 CreateObject(servername.typename [, location]) 参数 serv
Cos 函数 返回某个角的余弦值。 Cos(number) number 参数可以是任何将某个角表示为弧度的有效数值表达式。 说明 Cos 函数取某个角并返回直角三角形两边的比值。此比值是
CLng 函数 返回表达式,此表达式已被转换为 Long 子类型的 Variant。 CLng(expression) expression 参数是任意有效的表达式。 说明 通常,您可以使
CInt 函数 返回表达式,此表达式已被转换为 Integer 子类型的 Variant。 CInt(expression) expression 参数是任意有效的表达式。 说明 通常,可
Chr 函数 返回与指定的 ANSI 字符代码相对应的字符。 Chr(charcode) charcode 参数是可以标识字符的数字。 说明 从 0 到 31 的数字表示标准的不可打印的
CDbl 函数 返回表达式,此表达式已被转换为 Double 子类型的 Variant。 CDbl(expression) expression 参数是任意有效的表达式。 说明 通常,您可
CDate 函数 返回表达式,此表达式已被转换为 Date 子类型的 Variant。 CDate(date) date 参数是任意有效的日期表达式。 说明 IsDate 函数用于判断 d
CCur 函数 返回表达式,此表达式已被转换为 Currency 子类型的 Variant。 CCur(expression) expression 参数是任意有效的表达式。 说明 通常,
CByte 函数 返回表达式,此表达式已被转换为 Byte 子类型的 Variant。 CByte(expression) expression 参数是任意有效的表达式。 说明 通常,可以
CBool 函数 返回表达式,此表达式已转换为 Boolean 子类型的 Variant。 CBool(expression) expression 是任意有效的表达式。 说明 如果 ex
Atn 函数 返回数值的反正切值。 Atn(number) number 参数可以是任意有效的数值表达式。 说明 Atn 函数计算直角三角形两个边的比值 (number) 并返回对应角的弧
Asc 函数 返回与字符串的第一个字母对应的 ANSI 字符代码。 Asc(string) string 参数是任意有效的字符串表达式。如果 string 参数未包含字符,则将发生运行时错误。
Array 函数 返回包含数组的 Variant。 Array(arglist) arglist 参数是赋给包含在 Variant 中的数组元素的值的列表(用逗号分隔)。如果没有指定此参数,则
Abs 函数 返回数字的绝对值。 Abs(number) number 参数可以是任意有效的数值表达式。如果 number 包含 Null,则返回 Null;如果是未初始化变量,则返回 0。
FormatPercent 函数 返回表达式,此表达式已被格式化为尾随有 % 符号的百分比(乘以 100 )。 FormatPercent(expression[,NumDigitsAfterD
FormatNumber 函数 返回表达式,此表达式已被格式化为数值。 FormatNumber( expression [,NumDigitsAfterDecimal [,Inc
我是一名优秀的程序员,十分优秀!