我有一张数据库表格,有msisdn、date、imeit、lac_id和cell_id一共五个字段,其中date是日期,没用主键,一个msisdn对应多个date,一个date对应多个imeit,一个imeit对应多对lac_id和cell_id,我想要查询这张表中所有msisdn的imeit第一次发生变化的时候对应的第一对lac_id和cell_id,我该怎么写查询语句?
时间: 2024-04-15 18:27:54 浏览: 130
你可以使用子查询和窗口函数来实现这个查询。下面是一个示例查询语句:
```
SELECT msisdn, imeit, lac_id, cell_id
FROM (
SELECT msisdn, imeit, lac_id, cell_id, ROW_NUMBER() OVER (PARTITION BY msisdn ORDER BY date) AS rn
FROM your_table
) AS subquery
WHERE rn = 1
```
这个查询将按照日期顺序对记录进行排序,并为每个msisdn分配一个行号。然后,外部查询选择行号为1的记录,即每个msisdn的第一条记录。这样就可以得到每个msisdn的imeit第一次发生变化时对应的第一对lac_id和cell_id。
请将上述查询语句中的 `your_table` 替换为你实际的表名。
相关问题
hdfs dfs -get hdfs://wzjdh/Intermediate/PTMP/TEST/Tangsudong/TO_D_EVNT_NS_POSITION_TRACE_MSISDN_ADD_ENDTIME_REPORT_PROV TO_D_EVNT_NS_POSITION_TRACE_MSISDN_ADD_ENDTIME_REPORT_PROV
好的,您的命令是:
```
hdfs dfs -get hdfs://wzjdh/Intermediate/PTMP/TEST/Tangsudong/TO_D_EVNT_NS_POSITION_TRACE_MSISDN_ADD_ENDTIME_REPORT_PROV TO_D_EVNT_NS_POSITION_TRACE_MSISDN_ADD_ENDTIME_REPORT_PROV
```
请问需要我为您执行该命令吗?
SQL 错误 [47]: ClickHouse exception, code: 47, host: 192.168.2.101, port: 8123; Code: 47, e.displayText() = DB::Exception: Missing columns: 'DISTINCT' while processing query: 'SELECT DAY, AREA_TYPE, AREA_ID, DISTINCT AS MSISDN, AGE FROM TV_D_AREA_VISITOR_IMSI_ALL', required columns: 'DAY' 'AREA_TYPE' 'AGE' 'AREA_ID' 'DISTINCT', source columns: 'PHONE_BILL' 'AGE' 'OWNER_CITY' 'OWNER_PROV' 'RESID_DURA' 'NATIONALITY' 'MSISDN' 'IS_OVERNIGHT' 'DAY' 'SEX' 'AREA_CITY' 'AREA_PROV' 'AREA_ID' 'SOURCE_COUNTRY' 'MOBILE_DATA' 'APP' 'AREA_TYPE' (version 20.8.3.18)
这个错误提示是因为在你的 SQL 查询语句中,使用了关键字 DISTINCT 作为一个列名,而 DISTINCT 是 SQL 中的关键字,用于去重。因此,你需要修改查询语句,将 DISTINCT 作为列名改为其他合法的列名。比如,将查询语句改为:
SELECT DAY, AREA_TYPE, AREA_ID, MSISDN AS DISTINCT_MSISDN, AGE FROM TV_D_AREA_VISITOR_IMSI_ALL
这样就可以避免关键字冲突导致的错误。
阅读全文