sql中的Value_map数组

问题描述 投票:0回答:1

我是sql新手,这是分配给我的任务,我需要对vehicleViewId 20054133、vehicleViewId 20054133(存在于value_map中)位于第一个位置和第三个位置的所有会话进行count() value_map 列。

我尝试了类似的方法,但没有显示预期的结果

SELECT
  city_id,
  name,
  type,
  value_map,
FROM rider_event
WHERE
  name = 'request_confv2_product_tap'
  AND type = 'tap'
  AND element_at(map_keys(value_map), 3) = 'vehicleViewId'
  AND element_at(map_values(value_map), 3) IN ('20054133', '20054595', '20055263')
  AND datestr BETWEEN '2023-01-01' AND '2023-09-30';

value_map - 地图

输出:(按行)

value_map
pricingResponsePayload.responseId47789a1e-c337-4fba-8305-8cbf3ba8fed2index1vehicleViewId11107responsePayload.responseIda15f052d-63a1-45a1-ab1a-5ac65f255ea5previouslySelectedtruescopeUuid017d7868-6c1f-4e32-9bae-ca177e1960aahostListRECOMMENDED_LIST
pricingResponsePayload.responseId2352782f-56f5-4508-8fe1-a8e30799ea06index2vehicleViewId4185responsePayload.responseId2c7417ce-2774-48b6-869c-3042eac0685bpreviouslySelectedfalsescopeUuid3379e93e-c85d-4df8-addc-04b47b959bc0hostListRECOMMENDED_LISTvalue_map_schema_nameProductSelectionProductTapPayload
previouslySelectedfalsescopeUuid789c0f8c-8b94-4cae-a2d2-ab2fd955978ahostListRECOMMENDED_LISTvalue_map_schema_nameProductSelectionProductTapPayloadindex2vehicleViewId20042977responsePayload.responseHash8676db13786afb743cf270621d3f21b32632717afa30ecf31f99d52c630cf68dresponsePayload.responseId7638ccb4-55a0-4255-a775-1f9a24fd0947
index1vehicleViewId2875responsePayload.responseId26f8afd9-243c-4b4b-a421-1eda0c6a31c5previouslySelectedtruescopeUuid3dee9a49-1e40-45d2-b6c0-2ab0a5d7fa53hostListRECOMMENDED_LISTpricingResponsePayload.responseIdf68f4acd-ea74-4000-b25b-a9f763f14d4b
index0vehicleViewId10002446responsePayload.responseHashf9ebf5181099439ebcac940a98bacf476006795bd58824102ac02a17ead6d383responsePayload.responseId91f253f9-fca7-438c-9565-4da938953465visibleBoltOns[]previouslySelectedtruescopeUuidBB1F91B7-EEA1-45E6-A88D-E729D046FE56hostListRECOMMENDED_LIST
vehicleViewId20047223responsePayload.responseId9885b55e-4442-483b-86fd-99e400db37aepreviouslySelectedtruescopeUuidac1966bb-c463-416b-a313-7be75f29cd9fhostListRECOMMENDED_LISTpricingResponsePayload.responseId8f5344c7-733e-4d43-8a1e-26b8b6118a8findex1
previouslySelectedfalsescopeUuidd8613ca0-c17e-4afd-89e5-f85a685db962hostListRECOMMENDED_LISTindex1vehicleViewId1142responsePayload.responseHash211a99b165c6fceb8f3bcb974765f3cb9816790342149b6f66e7b4863c7730ccresponsePayload.responseId16c577ec-a02a-49df-8b53-87970330be97
hostListRECOMMENDED_LISTpricingResponsePayload.responseIdfb3e3dba-a406-4240-83d7-c7b3406b60baindex1vehicleViewId20004819responsePayload.responseId3827464d-14c9-41bf-869d-8d3b8722afcfpreviouslySelectedtruescopeUuid815797d9-2507-4355-8853-0d9178bdcc09
vehicleViewId2875responsePayload.responseHashbebcc6749eb7c08e299ac843d334a590a9901c72734ea62f838d9ad83d097741responsePayload.responseId579aa538-7c39-43d2-a289-d81ab1d0423fpreviouslySelectedtruescopeUuid37a57acf-3a8d-4e68-b145-eed30eb9e84dhostListRECOMMENDED_LISTindex0
responsePayload.responseId397355c7-afae-4d4d-a56e-fcce0745b879previouslySelectedtruescopeUuid8d51757d-8ae7-4fb3-8ced-63f766f1d353hostListRECOMMENDED_LISTindex0vehicleViewId2875responsePayload.responseHash4ad5b3eca315922fb6f1e7c9513c60ecbbfc3a1b7463d602d1abee4a2cbf80d2
sql mysql presto
1个回答
0
投票

要统计“vehicleViewId”同时出现在 value_map 列中的第一个和第三个位置的会话,您可以尝试以下操作:

SELECT
  city_id,
  name,
  type,
  COUNT(*) AS session_count
FROM rider_event
WHERE
  name = 'request_confv2_product_tap'
  AND type = 'tap'
  AND element_at(map_keys(value_map), 1) = 'vehicleViewId'
  AND element_at(map_values(value_map), 1) = '20054133'
  AND element_at(map_keys(value_map), 3) = 'vehicleViewId'
  AND element_at(map_values(value_map), 3) IN ('20054133', '20054595', '20055263')
  AND datestr BETWEEN '2023-01-01' AND '2023-09-30'
GROUP BY city_id, name, type;
© www.soinside.com 2019 - 2024. All rights reserved.