SQL查询更上一层楼

count distinct

w3resource
在这里插入图片描述

SQL 语句

SELECT
	count( DISTINCT `b2c_return_order`.`order_sn` ) 
FROM
	`b2c_return_order` 
WHERE
	( `b2c_return_order`.`user_id` = 198 AND `b2c_return_order`.`refund_status` = 5 )

对应的JOOQ

int count = db().select(DSL.countDistinct(TABLE.ORDER_SN))
			.from(TABLE)
			.where(TABLE.USER_ID.eq(userId))
			.and(TABLE.REFUND_STATUS.eq(OrderConstant.REFUND_STATUS_FINISH))
			.fetchOne(0,int.class);

subquery

error info

 Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause`

Stackoverflow: selecting-fields-to-join-on-when-joining-nested-queries

private SelectQuery<?> getIdeasQuery() {
    Select<?> numComments = dslContext.select(DSL.count().as("comment_count"), COMMENT.IDEA_ID).from(COMMENT).groupBy(COMMENT.IDEA_ID);
    Select<?> numLikes = dslContext.select(DSL.count().as("like_count"), USER_LIKES_IDEA.IDEA_ID).from(USER_LIKES_IDEA).groupBy(USER_LIKES_IDEA.IDEA_ID);

    return dslContext
          .select(DSL.field("comment_count").as("num_comments"))
          .select(DSL.field("like_count").as("num_likes"))
          .select(USER.DISPLAY_NAME)
          .select(USER.AUTHORITY)
          .select(IDEA.fields())
          .from(IDEA.leftOuterJoin(numComments.asTable("com")).on(DSL.field("com.idea_id").eq(IDEA.ID))
                    .leftOuterJoin(numLikes.asTable("like")).on(DSL.field("like.idea_id").eq(IDEA.ID))
                    .leftOuterJoin(USER).on(IDEA.USER_ID.eq(USER.ID)))
          .getQuery();
}

count distinct use order by

stackoverflow: How to use DISTINCT and ORDER BY in same SELECT statement?

一张卡可以被用户领取多次,
在这里插入图片描述

需要查询持有卡的用户,如查询card_id为7的用户数量,并按照领取时间排序max(create_time)

select count (distinct user_id),max(create_time) 
from user_card
where card_id = 7
orderBy(max(create_time))
发布了121 篇原创文章 · 获赞 3 · 访问量 4151

猜你喜欢

转载自blog.csdn.net/Q10CAU/article/details/105255327