SQL刷題記錄貼

1.題目:現在運營想要對用戶的年齡分布開展分析,在分析時想要剔除沒有獲取到年齡的用戶,請你取出所有年齡值不為空的用戶的設備ID,性別,年齡,學校的信息。

錯誤:select device_id,gender,age,university from user_profile where age!=null;

在 SQL 中,判斷?NULL?的值需要使用?IS NULL?或?IS NOT NULL,而不能直接用?!= null?來比較。NULL?在 SQL 中表示一個未知的值,因此不能使用普通的比較運算符(如?!=?或?=)進行比較。

正確:

select device_id,gender,age,university from user_profile where age is not null;

select device_id,gender,age,university from user_profile where age!='';

select device_id,gender,age,university from user_profile where age<>'';

2.題目:運營想要知道復旦大學學生gpa最高值是多少,請你取出相應數據,根據輸入,你的查詢應返回以下結果,結果保留到小數點后面1位

正確:注意起別名和保留一位小數

select round(max(gpa),1) gpa from user_profile where university='復旦大學';

3.題目:現在運營想要對每個學校不同性別的用戶活躍情況和發帖數量進行分析,請分別計算出每個學校每種性別的用戶數、30天內平均活躍天數和平均發帖數量。

錯誤:select gender,university,count(gender) user_num,round(avg(active_days_within_30),1) avg_active_day,round(avg(question_cnt),1) avg_question_cnt from user_profile order by (gender,university) desc group by (gender,university) ;

group by和 order by后面不加括號,order by在group by后面

正確:

select?gender,?university,?count(gender) user_num,?round(avg(active_days_within_30), 1) avg_active_day,?round(avg(question_cnt), 1) avg_question_cnt from?user_profile group by?gender, university order by gender asc,university asc;

4.題目:現在運營想查看每個學校用戶的平均發貼和回帖情況,尋找低活躍度學校進行重點運營,請取出平均發貼數低于5的學校或平均回帖數小于20的學校。

錯誤:

select university,round(avg(question_cnt),3) avg_question_cnt,round(avg(answer_cnt),3) avg_answer_cnt from user_profile group by university having avg_question_cnt <5 or answer_cnt<20 ;

注意!!!

在 SQL 查詢中,執行的順序大致如下:

  1. FROM: 從哪個表或視圖獲取數據。
  2. WHERE: 過濾數據。
  3. GROUP BY: 按照指定的列對數據進行分組。
  4. HAVING: 對分組后的數據進行過濾(通常用于聚合條件)。
  5. SELECT: 從分組后的數據中選擇列。
  6. ORDER BY: 對結果進行排序。
  7. LIMIT: 限制返回的結果行數(如果有的話)。

所以HAVING不能使用select中的別名!

5.運營想要了解每個學校答過題的用戶平均答題數量情況,請你取出數據。

正確:

select university,(count(question_id)/count(distinct(u.device_id))) avg_answer_cnt from user_profile u join ?question_practice_detail q on u.device_id=q.device_id group by university order by university ;

一定要加distinct!

6.題目:運營想要計算一些參加了答題的不同學校、不同難度的用戶平均答題量,請你寫SQL取出相應數據

select u.university,s.difficult_level,round(count(s.question_id)/count(distinct u.device_id),4) avg_answer_cnt?

from user_profile u join?

(select p.device_id,p.question_id,q.difficult_level from question_practice_detail p left join question_detail q on p.question_id=q.question_id) s?

on u.device_id=s.device_id GROUP BY u.university, s.difficult_level;

為什么需要兩個字段:

  • 如果你只按?u.university?進行分組,你將無法區分不同難度的題目,只能得到每個學校的總答題量。
  • 如果你只按?s.difficult_level?進行分組,你將無法區分不同學校的答題量。
  • 因此,使用?兩個字段?(university?和?difficult_level)來分組,是為了獲取每個學校和每個難度題目的詳細統計。

具體例子:

假設有以下數據:

  • 學校 A 和學校 B 的用戶分別參與了難度為?easy?和?medium?的題目。
  • 如果我們只按學校分組,難度將無法區分;
  • 如果只按難度分組,學校也無法區分。
    因此,按學校和難度同時分組能夠準確計算每個學校和每個難度下的答題統計數據。

7.運營想要查看參加了答題的山東大學的用戶在不同難度下的平均答題題目數,請取出相應數據

報錯:Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'niuke.u.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

原因:

根據 SQL 標準,SELECT?列表中的列要么應該包含在?GROUP BY?子句中,要么應該使用聚合函數進行處理。

最直接的方法是修改 SQL 查詢,使得 SELECT 列表中的所有列都包含在 GROUP BY 子句中,或者使用聚合函數。

8.

  • UNION:合并多個查詢的結果集,并去除重復的行。它在返回結果時會進行去重操作。
  • UNION ALL:合并多個查詢的結果集,但不會去除重復的行。返回結果中可能包含重復的記錄。

9.題目:現在運營想要查看用戶在某天刷題后第二天還會再來刷題的留存率。請你取出相應數據。

第一眼看,完全沒有思路!!!

select count(distinct q2.device_id,q2.date)/count(distinct q1.device_id,q1.date) as avg_ret

from question_practice_detail as q1 left join

question_practice_detail as q2

on q1.device_id = q2.device_id

and datediff(q2.date,q1.date)=1;

  • COUNT(DISTINCT q1.device_id, q1.date)?計算的是,q1?表中?不同設備和日期的組合?的數量。

10.題目:現在運營舉辦了一場比賽,收到了一些參賽申請,表數據記錄形式如下所示,現在運營想要統計每個性別的用戶分別有多少參賽者,請取出相應結果。

  • str:要操作的字符串。
  • delim:分隔符,用來拆分字符串。
  • count:返回子字符串的數量。
    • 如果?count?是正數,表示從左側開始計算,返回從左到右第?count?次出現分隔符之前的所有部分。
    • 如果?count?是負數,表示從右側開始計算,返回從右到左第?count?次出現分隔符之前的所有部分。

假設有以下字符串:'apple,banana,cherry'

我們希望提取分隔符?,?前面的第一個部分(即?apple

SELECT SUBSTRING_INDEX('apple,banana,cherry', ',', 1) AS first_part;
我們希望提取分隔符?,?后面的最后一個部分(即?cherry)。

SELECT SUBSTRING_INDEX('apple,banana,cherry', ',', -1) AS last_part;
我們希望提取第二部分(即?banana)。

SELECT SUBSTRING_INDEX(SUBSTRING_INDEX('apple,banana,cherry,date', ',', 2), ',', -1) AS second_part;

11.blog_url是sql中的一個字段,舉例http:/url/bisdgboy777,我怎么提取最后斜杠后的bisdgboy777?SELECT SUBSTRING_INDEX(blog_url, '/', -1) AS extracted_value
FROM your_table;

在 MySQL 示例中,SUBSTRING_INDEX?函數用于獲取最后一個斜杠后的部分。

12.select substring_index(substring_index(profile,',',3),',',-1) as age
,count(age) as number from user_submit group by age;
為什么count(age)不正確,count(*)正確
`count(age)` 只會統計 `age` 列中非 `NULL` 的值

`count(*)` 計算的是所有行的數量,包括 `NULL` 和非 `NULL` 的值

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/79379.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/79379.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/79379.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Windows本地部署n8n工作流自動平臺結合內網穿透遠程在線訪問】

&#x1f49d;&#x1f49d;&#x1f49d;歡迎來到我的博客&#xff0c;很高興能夠在這里和您見面&#xff01;希望您在這里可以感受到一份輕松愉快的氛圍&#xff0c;不僅可以獲得有趣的內容和知識&#xff0c;也可以暢所欲言、分享您的想法和見解。 推薦:kwan 的首頁,持續學…

python爬蟲降低IP封禁,python爬蟲除了使用代理IP和降低請求頻率,還有哪些方法可以應對IP封禁?

文章目錄 前言1. 利用 CDN 節點2. 模擬真實用戶行為3. 使用 IP 池輪換策略4. 處理 Cookie 和會話信息5. 分布式爬蟲 前言 除了使用代理 IP 和降低請求頻率&#xff0c;以下這些方法也能應對 IP 封禁&#xff1a; Python 3.13.2安裝教程&#xff08;附安裝包&#xff09;Python…

光譜相機的成像方式

光譜相機的成像方式決定了其如何獲取物體的空間與光譜信息&#xff0c;核心在于分光技術與掃描模式的結合。以下是主要成像方式的分類解析&#xff1a; ?一、濾光片切換型? ?1. 濾光片輪&#xff08;Filter Wheel&#xff09;? ?原理?&#xff1a;通過旋轉裝有多個窄帶…

AI在市場營銷分析中的核心應用及價值,分場景詳細說明

以下是 AI在市場營銷分析中的核心應用及價值&#xff0c;分場景詳細說明&#xff1a; 1. 客戶行為分析與細分 AI技術應用&#xff1a; 機器學習&#xff1a;分析用戶點擊、購買、瀏覽等行為數據&#xff0c;識別消費模式&#xff08;如高頻購買時段、偏好品類&#xff09;。聚…

潯川AI翻譯v7.0更新預告

親愛的潯川AI翻譯用戶&#xff1a; 感謝您一直以來的支持&#xff01;潯川AI翻譯自推出以來&#xff0c;已迭代6個版本&#xff0c;其中**v2.0和v4.0因技術問題&#xff08;翻譯結果顯示異常、注冊失敗、密碼找回功能失效等&#xff09;**被迫下架。我們深知這些問題影響了您…

LabVIEW中二維數組轉換為彩色圖

在 LabVIEW 編程環境下&#xff0c;有用戶想把二維數組轉化為彩色圖片。通過附件的程序示例&#xff0c;給出了具體實現方法&#xff0c;包括對數據的處理以及顏色映射的設置等內容&#xff0c;還涉及解決數據范圍與顏色映射不匹配等問題。公司官網有源碼 程序功能及細節 功能&…

【模型常見評價指標(分類)】

目錄 常見指標 其他的評估指標 3.1 BLEU 3.2 ROUGE 3.3 困惑度PPL(perplexity) 常見指標 其他的評估指標 3.1 BLEU BLEU&#xff08;Bilingual Evaluation Understudy&#xff0c;雙語評估替補&#xff09;分數是評估一種語言翻譯成另一種語言的文本質量的指標。它將“質…

期貨數據API對接實戰指南

一、期貨數據接口概述 StockTV提供全球主要期貨市場的實時行情與歷史數據接口&#xff0c;覆蓋以下品種&#xff1a; 商品期貨&#xff1a;原油、黃金、白銀、銅、天然氣、農產品等金融期貨&#xff1a;股指期貨、國債期貨特色品種&#xff1a;馬棕油、鐵礦石等區域特色期貨 …

TCP連接建立:為什么是三次握手?

接下來&#xff0c;以三個方面分析三次握手的原因&#xff1a; 1、三次握手才可以阻止重復歷史連接的初始化&#xff08;主要原因&#xff09; 2、三次握手才可以同步雙方的初始化序列號 3、三次握手才可以避免資源浪費 原因一&#xff1a;避免歷史連接 簡單來說&#xff0…

Table類型的表單

形如下面的圖片 1 label與prop屬性 const columns[{label: "文件名",prop: "fileName",scopedSlots: "fileName",},{ label: "刪除時間",prop: "recoveryTime",width: "200",},{ label: "大小",prop:…

Cesium 加載 本地 b3dm 格式文件 并且 獲取鼠標點擊處經緯度 (親測可用)

很奇怪cesium 里面只支持 相對路徑 不支持絕對路徑 我把 模型放在 /***/Cesium-1.128/Apps/SampleData/Cesium3DTiles/Tilesets 下面 "../../SampleData/Cesium3DTiles/Tilesets/terra_b3dms/tileset.json",所有源碼 const viewer new Cesium.Viewer("cesiu…

Spring AI核心之“ChatClient”-來自DeepSeek

在 Spring AI 生態中&#xff0c;ChatClient 是一個面向開發者設計的高層抽象接口&#xff0c;它簡化了與大型語言模型&#xff08;LLMs&#xff09;的交互流程&#xff0c;尤其適用于需要快速構建端到端 AI 應用&#xff08;如聊天機器人、RAG 問答系統等&#xff09;的場景。…

購買電腦時,主要需要關注以下核心配置,它們直接影響性能、使用體驗和價格。根據需求(辦公、游戲、設計、編程等),側重點會有所不同。看看Deepseek的建議

1. 處理器&#xff08;CPU&#xff09; 作用&#xff1a;電腦的“大腦”&#xff0c;影響整體運算速度和多任務處理能力。關鍵參數&#xff1a; 品牌與型號&#xff1a;Intel&#xff08;酷睿i3/i5/i7/i9&#xff09;或 AMD&#xff08;銳龍R3/R5/R7/R9&#xff09;。核心/線程…

408數據結構緒論刷題001

答案&#xff1a;D 解析&#xff1a; ? A選項&#xff1a;數據元素是組成數據對象的基本單位 &#xff0c;它只是數據的基本個體&#xff0c;不能完整定義數據結構&#xff0c;所以A選項錯誤。 ? B選項&#xff1a;數據對象是性質相同的數據元素的集合&#xff0c;僅僅描述…

c++STL——vector的使用和模擬實現

文章目錄 vector的使用和模擬實現vector的使用vector介紹重點接口的講解迭代器部分默認成員函數空間操作增刪查改操作迭代器失效問題(重要)調整迭代器 vector的模擬實現實現的版本模擬實現結構預先處理的函數尾插函數push_backswap函數賦值重載size函數reserve函數 迭代器默認成…

Java深入

String相關的類 1.String不可變的類 源碼&#xff1a; public final class Stringimplements java.io.Serializable, Comparable<String>, CharSequence {/** The value is used for character storage. */private final char value[];/** Cache the hash code for th…

【Java編程】【計算機視覺】一種簡單的圖片加/解密算法

by Li y.c. 一、內容簡介 本文介紹一種簡單的圖片加/解密算法&#xff0c;算法的基本原理十分簡單&#xff0c;即逐個&#xff08;逐行、逐列&#xff09;地獲取圖片的像素點顏色值&#xff0c;對其進行一些簡單的算數運算操作進行加密&#xff0c;解密過程則相應地為加密運算…

從GPT到Gemini 大模型進化史

從GPT到Gemini&#xff1a;大模型進化史 在過去的幾年里&#xff0c;人工智能領域經歷了翻天覆地的變化&#xff0c;其中最引人注目的莫過于大規模語言模型的發展。從最初的GPT系列到最近的Gemini&#xff0c;這些模型不僅在技術上取得了重大突破&#xff0c;還在實際應用中展…

【AI提示詞】中國歷史與世界發展對比器

提示說明 輸入特定年份&#xff0c;輸出該時期中國與世界的發展狀況。 提示詞 # Role 中國歷史與世界發展對比器## Profile - author: xxx - version: 1.0 - description: 輸入特定年份&#xff0c;輸出該時期中國與世界的發展狀況。## Attention 請深入挖掘歷史資料&#x…

阿里云OSS應對DDoS攻擊策略

阿里云對象存儲服務&#xff08;OSS&#xff09;若遭遇DDoS攻擊&#xff0c;可結合阿里云提供的安全服務與自身配置優化進行綜合防御。以下是具體的解決方案及步驟&#xff1a; 1. 啟用阿里云DDoS防護服務 防護服務類型&#xff1a;阿里云提供基礎DDoS防護&#xff08;默認免費…