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

MySQL-如何使用Group By获取值

韩涵衍
2023-03-14
+-----------------+--------+-------+
| Date(yyyy-mm-dd)| name   | price |
+-----------------+--------+-------+
|    2021-03-01   | APPLE  |    15 |
|    2021-03-01   | Orange |    10 |
|    2021-03-01   | Banana |     5 |
|    2021-03-02   | Apple  |    16 |
|    2021-03-02   | Orange |     9 |
|    2021-03-02   | Banana |     4 |
|    2021-03-03   | Apple  |    17 |
|    2021-03-03   | Orange |    11 |
|    2021-03-03   | Banana |     5 |
+-----------------+--------+-------+



    **Fruit Value**

我想知道那些每天都涨价的水果的名字。所以产量应该是“苹果”,因为苹果的价格在3月1日是15,3月2日是16,3月3日是17...............................................请任何人给我建议。

共有2个答案

苏华荣
2023-03-14

lag()是这里要使用的窗口函数。

内部查询检测每组中当前行和前一行之间的价格变化是否为增加。它只是设置了一个标志:1表示增加,0表示不增加。

外部查询只是将标志求和,并将求和值与每个name组中元素的总数进行比较。

SELECT name
FROM (
    SELECT
        *,
        IF(
            price > LAG(price, 1, 0) OVER (
                PARTITION BY name
                ORDER BY date
            ),
            1,
            0
        ) AS flag
    FROM a
) r
GROUP BY name
HAVING SUM(flag) = COUNT(*)

dB<>小提琴

穆宏胜
2023-03-14

如果您有所有日期的所有水果的价格,那么您可以使用group_concat():

SELECT name
FROM tablename
GROUP BY name
HAVING COUNT(*) = COUNT(DISTINCT price) -- all prices are different
   AND GROUP_CONCAT(price ORDER BY Date) = GROUP_CONCAT(price ORDER BY price)
   -- prices ordered by date are in the same order as prices ordered ascending by price

请参阅演示。

 类似资料:
  • 当我像这样使用DataFrame groupby时: 我只会得到一个列为“age”和“count(id)”的DataFrame,但在df中,还有许多其他列,如“name”。 总之,我想得到MySQL中的结果, “按年龄从df组中选择姓名、年龄、计数(id)” 在Spark中使用groupby时该怎么办?

  • 问题内容: 我使用PDO和MySQL,出于某种原因,当从数据库中获取int类型的值时,PDOStatement返回的是数字的字符串表示形式,而不是数字类型的值。如何防止这种情况发生? 我注意到有一个PDO类的属性:应该可以解决这个问题,但是在尝试修改它时,它抛出一个错误,指出该属性对MySQL驱动程序无效。 查询数据库时,获取字符串而不是数字是否正常? 问题答案: 我不认为可以在PHP 5.2中完

  • 问题内容: 在MySQL中具有分区的RowNumber() 我想要基于id外键的以下输出 问题答案: 我几乎不明白你的意思。mysql中没有任何功能,分区与您的请求无关。 它的:

  • 预期输出:获取组之间计数为max的结果行,如: 示例2:这个数据帧,我按分组: 对于上面的示例,我希望获取每个组中等于max的所有行,例如:

  • 问题内容: 在日志中,我得到: “来自LAHETYS”发生了什么事?使用HQL或/和SQL处理此问题的最佳实践是什么? 另一个问题: 我得到一个例外: 所以我不能将对象投射到我的Lahetys对象上,很奇怪吗? 谢谢!佐美 问题答案: 您的HQL查询无效。LIMIT不是有效的HQL子句。要在Hibernate中做到这一点,只需

  • 问题内容: 关闭。 此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Stack Overflow的主题。 4年前关闭。 改善这个问题 我有一个表user_places像这样: 我正在尝试获取用户的最新recorded_date和他最常访问的地点的名称。 问题答案: 如果数据不是太大,则可以在MySQL中使用此技巧: