当前位置: 首页 > 知识库问答 >
问题:

SQL-同时使用group by和details查询

郜俊健
2023-03-14

我有如下sql查询:

SELECT sum(amount) AS sum, incomes_category_assigned_to_users.name AS category_name
        FROM incomes 
        INNER JOIN incomes_category_assigned_to_users on incomes.income_category_assigned_to_user_id = incomes_category_assigned_to_users.id 
        WHERE (incomes.user_id = :user_id AND date_of_income >= :first_date AND date_of_income <= :second_date)
        GROUP BY incomes.income_category_assigned_to_user_id 
        ORDER BY sum DESC;

结果是按类别分组的用户收入-显示为数组。

我想添加subquery-get这些收入,而不是分组的,这样用户就可以在array中展开字段并详细地看到它。

谢谢你的帮助

共有1个答案

冀冯浩
2023-03-14

MySQL不支持数组。一种方法是将值放入字符串中:

SELECT SUM(amount) AS sum,
       GROUP_CONCAT(amount) as amounts,
       icau.name AS category_name
FROM incomes i JOIN
     incomes_category_assigned_to_users icau
     ON i.income_category_assigned_to_user_id = icau.id 
WHERE i.user_id = :user_id AND
      date_of_income >= :first_date AND
      date_of_income <= :second_date
GROUP BY icau.name
ORDER BY sum DESC;

请注意我对查询所做的更改:

  • 表具有合理的表别名。它们使查询更易于写入和读取。
  • 只使用where子句中不需要括号。
  • GROUP BY键现在与未聚合的SELECT列一致。
 类似资料:
  • 我有下面的模式, 学生(名字、姓氏、SID) 已注册(学生ID、课程ID) 课程(CID、课程名称、系) 我需要找出哪些学生上的课比课多。和位位于类别中。我有以下查询,其中列出了所有注册课程的学生以及他们注册了多少课程。 不太确定如何将这个数字与那些注册信息技术课程的人进行比较。

  • 在这部分教程中,接下来我们将讨论自动生成的Details和Delete方法。 查询Details和Delete方法 打开Movie控制器并查看Details方法。 public ActionResult Details(int? id) { if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest

  • 我需要将以下查询转换为hibernate条件查询。请帮忙 由于投票表上的复合主键,我用@Embeddable分隔了主键,所以后面的createQuery不起作用 和可嵌入对象 请建议一个更好的方法。

  • 假设我们有两个对象: 如何获得相同位置的所有服务器的状态列表。例如如果和? 如果我想使用createQuery(Server.class),然后。filter(),则无法输出状态列表!

  • 我有以下四个表格,包含学生信息、讲座信息、听课信息和考试。 使用SELECT Student_;我得到了每个学生的平均分数列表。 如何将其与MAX函数相结合,以获得列表中平均数最高的学生的ID,姓名和平均值? 学生id 学生姓名 lecture_id<br>lecture_name<br>ECTS id 学生id 讲座id id 学生id 讲座id 分数

  • 1)使用的第一个查询...大约用了23秒 目前我修改了查询..这需要大约9秒 我不确定要做的表演是什么?我希望这个查询是快速的..我尝试索引rid和id,但这仍然使查询变得更糟。 下面是表格的详细信息 mza_movie_upload MZA_Movie_Statics