社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  GMB  »  全部回复
回复总数  34
5 年前
回复了 GMB 创建的主题 » 如何在mysql中找到当时的最低值(圈记录)?

NOT EXISTS 带有相关子查询的condition可以做到这一点,比如:

SELECT *
FROM temp_laptimes t
WHERE NOT EXISTS (
    SELECT 1
    FROM temp_laptimes t1
    WHERE t1.lap_date < t.lap_date AND t1.laptime < t.laptime
)

这个 不存在 条件确保没有先前记录的圈数时间更短。

Demo on DB Fiddlde :

| lap_id | driver | laptime | lap_date   |
| ------ | ------ | ------- | ---------- |
| 1      | Dean   | 56.8    | 2019-01-01 |
| 33     | Carl   | 56.1    | 2019-03-01 |
| 61     | Bob    | 55.9    | 2019-06-01 |
| 84     | Anne   | 55.7    | 2019-08-01 |

如果您使用的是mysql 8.0,另一种可能更有效的方法是在子查询中使用窗口函数计算当前记录和正在处理的记录的最小圈时间。然后,外部查询筛选出最小值等于当前圈时间的记录:

SELECT *
FROM (
  SELECT 
      t.*, 
      MIN(laptime) OVER(ORDER BY lap_date) min_lap_time
  FROM temp_laptimes t
) x WHERE laptime = min_lap_time;

Demo on DB Fiddle (同样的结果)。

5 年前
回复了 GMB 创建的主题 » 在mysql中基于用户id获取购买号

你好像在找 ROW_NUMBER() (在mysql 8.0中提供)。此窗口函数可用于在共享相同记录的组中对记录进行排序 user .

SELECT
    user,
    date,
    purchase_id,
    ROW_NUMBER() OVER(PARTITION BY user ORDER BY purchase_id ) purchase_order
FROM mytable

注:目前还不清楚您要使用哪一列来订购。它可能是 purchase_id (如上面的查询所示),或者 date :您可以根据需要更改查询。

Demo on DB Fiddle :

| user | date       | purchase_id | purchase_order |
| ---- | ---------- | ----------- | -------------- |
| a    | 2018-01-01 | 1           | 1              |
| a    | 2018-01-02 | 3           | 2              |
| a    | 2018-01-03 | 4           | 3              |
| a    | 2018-01-04 | 6           | 4              |
| b    | 2018-01-02 | 2           | 1              |
| b    | 2018-01-04 | 5           | 2              |
5 年前
回复了 GMB 创建的主题 » 如何在MySQL中用不同的值替换值?

这应该可以做到:

SELECT
    id,
    CASE WHEN name IS NULL THEN 'NULL' ELSE 'Secret' END Name
FROM mytable

这个 demo on DB Fiddle 使用示例数据返回:

id | Name  
-: | :-----
 1 | Secret
 2 | NULL  
 3 | Secret
6 年前
回复了 GMB 创建的主题 » 将mysql查询转换为hive

除了在 GROUP BY 子句,新查询中的逻辑似乎与旧查询中的逻辑不同(例如:子查询 q2 计算新内容…并且没有与其他表的联接条件)。

配置单元不支持中的子查询 SELECT 条款,但它 does allow them in FROM and WHERE clauses . 我只需将内联子查询移动到 条款。因为它只返回一条记录,所以 CROSS JOIN :

SELECT
    d.dept_name,
    de.dept_no,
    e.gender,
    (count(*)/x.cnt) AS Sex
FROM 
    employees e
    INNER JOIN dept_emp de ON de.emp_no =  e.emp_no
    INNER JOIN departments d ON de.dept_no = d.dept_no
    CROSS JOIN (SELECT COUNT(*) cnt FROM employees) x
GROUP BY 
    de.dept_no, 
    d.dept_name,
    e.gender
ORDER BY 
    de.dept_no;

NB1:总是使用 明确的 标准 JOIN 而不是旧的学校, 隐性的 加入 s;我相应地修改了查询(还添加了表别名)。