Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
82bcdca
Merge pull request #26066 from code-dot-org/test
Nov 14, 2018
5e37064
Merge pull request #26096 from code-dot-org/dtp_candidate_eb8ad483
Nov 15, 2018
d101bf2
Merge pull request #26105 from code-dot-org/test
Nov 15, 2018
5055245
Merge pull request #26113 from code-dot-org/dtp_candidate_98fe4a58
davidsbailey Nov 15, 2018
491a3bd
Merge pull request #26144 from code-dot-org/test
Hamms Nov 17, 2018
5ae05d8
Merge pull request #26165 from code-dot-org/dtp_candidate_f8d3e5b7
islemaster Nov 19, 2018
c50fd61
Merge pull request #26182 from code-dot-org/dtp_candidate_8635c267
mehalshah Nov 20, 2018
8b378be
Merge pull request #26192 from code-dot-org/dtp_candidate_66a8dd9d
Nov 21, 2018
6e3c6ce
Merge pull request #26216 from code-dot-org/dtp_candidate_4debf600
Erin007 Nov 27, 2018
6aa9b7c
Merge pull request #26239 from code-dot-org/dtp_candidate_62b77f31
nkiruka Nov 28, 2018
730874d
Merge pull request #26254 from code-dot-org/test
Nov 29, 2018
df8c350
Merge pull request #26275 from code-dot-org/dtp_candidate_8e91824a
Nov 30, 2018
0eea843
Merge pull request #26279 from code-dot-org/dtp_candidate_01f49633
Nov 30, 2018
79289aa
Merge pull request #26294 from code-dot-org/test
davidsbailey Dec 4, 2018
e0544af
Merge pull request #26342 from code-dot-org/dtp_candidate_b3892251
islemaster Dec 12, 2018
e361240
Merge pull request #26348 from code-dot-org/dtp_candidate_f7c4ffe2
islemaster Dec 13, 2018
0aeb01e
Merge pull request #26356 from code-dot-org/dtp_candidate_3ca14161
Dec 13, 2018
fe2a600
Update user_proficiencies backfill script params for the 2018 CourseA…
Dec 14, 2018
0929a59
Change default DATA_DIRECTORY to /tmp
Dec 14, 2018
648f7a8
Add script id for 2018 express course to queries
Dec 14, 2018
dc4aecb
Merge pull request #26376 from code-dot-org/dtp_candidate_e359dc39
Erin007 Dec 14, 2018
6146837
Merge branch '2018-courses-proficiencies-backfill' of github.com:code…
deploy-code-org Dec 14, 2018
105a869
Add nil check for case where user's only recorded progress was during…
deploy-code-org Dec 17, 2018
b2d7b0f
convert IFrameEmbedOverlay to ES6
Erin007 Dec 18, 2018
26546e4
Merge branch 'staging' into iframeoverlay-es6
Erin007 Dec 18, 2018
30adfa6
Merge pull request #26362 from code-dot-org/2018-courses-proficiencie…
Dec 18, 2018
ae6f7d7
Merge pull request #26403 from code-dot-org/iframeoverlay-es6
Erin007 Dec 18, 2018
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 16 additions & 21 deletions 37 apps/src/templates/IFrameEmbedOverlay.jsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import * as color from "../util/color";
import React, {PropTypes} from 'react';
import React, {PropTypes, Component} from 'react';
import Radium from 'radium';
import {singleton as studioApp} from '../StudioApp';

Expand Down Expand Up @@ -55,36 +55,31 @@ var styles = {
},
};

var IFrameEmbedOverlay = React.createClass({

propTypes: {
class IFrameEmbedOverlay extends Component {
static propTypes = {
appWidth: PropTypes.number.isRequired,
appHeight: PropTypes.number.isRequired,
style: PropTypes.object,
playButtonStyle: PropTypes.object,
},
};

getInitialState() {
return {
tooYoung: false
};
},
state = {
tooYoung: false
};

getDefaultProps() {
return {
showPlayButton: true,
};
},
static defaultProps = {
showPlayButton: true
};

handleTooYoung() {
handleTooYoung = () => {
this.setState({tooYoung: true});
},
};

onClick() {
onClick = () => {
if (!this.state.tooYoung) {
studioApp().startIFrameEmbeddedApp(this.handleTooYoung);
}
},
};

render() {
return (
Expand Down Expand Up @@ -124,7 +119,7 @@ var IFrameEmbedOverlay = React.createClass({
}
</div>
);
},
});
}
}

export default Radium(IFrameEmbedOverlay);
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
s/#{start_date_short}/20180701/
s/#{start_date}/"2018-07-01"/

s/#{end_date_short}/20180801/
s/#{end_date}/"2018-08-01"/

s/#{start_id}/1577000000/
s/#{end_id}/1586500000/
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
s/#{start_date_short}/20180801/
s/#{start_date}/"2018-08-01"/

s/#{end_date_short}/20180901/
s/#{end_date}/"2018-09-01"/

s/#{start_id}/1586300000/
s/#{end_id}/1610300000/
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
s/#{start_date_short}/20180901/
s/#{start_date}/"2018-09-01"/

s/#{end_date_short}/20181001/
s/#{end_date}/"2018-10-01"/

s/#{start_id}/1610200000/
s/#{end_id}/1657000000/
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
s/#{start_date_short}/20181001/
s/#{start_date}/"2018-10-01"/

s/#{end_date_short}/20181004/
s/#{end_date}/"2018-10-04"/

s/#{start_id}/1656800000/
s/#{end_id}/1670000000/
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
s/#{start_date_short}/20181004/
s/#{start_date}/"2018-10-04"/

s/#{end_date_short}/20181101/
s/#{end_date}/"2018-11-01"/

s/#{start_id}/1664500000/
s/#{end_id}/1726000000/
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
s/#{start_date_short}/20181101/
s/#{start_date}/"2018-11-01"/

s/#{end_date_short}/20181201/
s/#{end_date}/"2018-12-01"/

s/#{start_id}/1725000000/
s/#{end_id}/1798000000/
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
s/#{start_date_short}/20181201/
s/#{start_date}/"2018-12-01"/

s/#{end_date_short}/20181214/
s/#{end_date}/"2018-12-14"/

s/#{start_id}/1797000000/
s/#{end_id}/1844425643/
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
CREATE TABLE user_proficiencies_20180701_20180801 AS
SELECT
user_levels.user_id,
SUM(IF(level_concept_difficulties.sequencing = 1, 1, 0)) AS sequencing_d1_count,
SUM(IF(level_concept_difficulties.sequencing = 2, 1, 0)) AS sequencing_d2_count,
SUM(IF(level_concept_difficulties.sequencing = 3, 1, 0)) AS sequencing_d3_count,
SUM(IF(level_concept_difficulties.sequencing = 4, 1, 0)) AS sequencing_d4_count,
SUM(IF(level_concept_difficulties.sequencing = 5, 1, 0)) AS sequencing_d5_count,
SUM(IF(level_concept_difficulties.debugging = 1, 1, 0)) AS debugging_d1_count,
SUM(IF(level_concept_difficulties.debugging = 2, 1, 0)) AS debugging_d2_count,
SUM(IF(level_concept_difficulties.debugging = 3, 1, 0)) AS debugging_d3_count,
SUM(IF(level_concept_difficulties.debugging = 4, 1, 0)) AS debugging_d4_count,
SUM(IF(level_concept_difficulties.debugging = 5, 1, 0)) AS debugging_d5_count,
SUM(IF(level_concept_difficulties.repeat_loops = 1, 1, 0)) AS repeat_loops_d1_count,
SUM(IF(level_concept_difficulties.repeat_loops = 2, 1, 0)) AS repeat_loops_d2_count,
SUM(IF(level_concept_difficulties.repeat_loops = 3, 1, 0)) AS repeat_loops_d3_count,
SUM(IF(level_concept_difficulties.repeat_loops = 4, 1, 0)) AS repeat_loops_d4_count,
SUM(IF(level_concept_difficulties.repeat_loops = 5, 1, 0)) AS repeat_loops_d5_count,
SUM(IF(level_concept_difficulties.repeat_until_while = 1, 1, 0)) AS repeat_until_while_d1_count,
SUM(IF(level_concept_difficulties.repeat_until_while = 2, 1, 0)) AS repeat_until_while_d2_count,
SUM(IF(level_concept_difficulties.repeat_until_while = 3, 1, 0)) AS repeat_until_while_d3_count,
SUM(IF(level_concept_difficulties.repeat_until_while = 4, 1, 0)) AS repeat_until_while_d4_count,
SUM(IF(level_concept_difficulties.repeat_until_while = 5, 1, 0)) AS repeat_until_while_d5_count,
SUM(IF(level_concept_difficulties.for_loops = 1, 1, 0)) AS for_loops_d1_count,
SUM(IF(level_concept_difficulties.for_loops = 2, 1, 0)) AS for_loops_d2_count,
SUM(IF(level_concept_difficulties.for_loops = 3, 1, 0)) AS for_loops_d3_count,
SUM(IF(level_concept_difficulties.for_loops = 4, 1, 0)) AS for_loops_d4_count,
SUM(IF(level_concept_difficulties.for_loops = 5, 1, 0)) AS for_loops_d5_count,
SUM(IF(level_concept_difficulties.events = 1, 1, 0)) AS events_d1_count,
SUM(IF(level_concept_difficulties.events = 2, 1, 0)) AS events_d2_count,
SUM(IF(level_concept_difficulties.events = 3, 1, 0)) AS events_d3_count,
SUM(IF(level_concept_difficulties.events = 4, 1, 0)) AS events_d4_count,
SUM(IF(level_concept_difficulties.events = 5, 1, 0)) AS events_d5_count,
SUM(IF(level_concept_difficulties.variables = 1, 1, 0)) AS variables_d1_count,
SUM(IF(level_concept_difficulties.variables = 2, 1, 0)) AS variables_d2_count,
SUM(IF(level_concept_difficulties.variables = 3, 1, 0)) AS variables_d3_count,
SUM(IF(level_concept_difficulties.variables = 4, 1, 0)) AS variables_d4_count,
SUM(IF(level_concept_difficulties.variables = 5, 1, 0)) AS variables_d5_count,
SUM(IF(level_concept_difficulties.functions = 1, 1, 0)) AS functions_d1_count,
SUM(IF(level_concept_difficulties.functions = 2, 1, 0)) AS functions_d2_count,
SUM(IF(level_concept_difficulties.functions = 3, 1, 0)) AS functions_d3_count,
SUM(IF(level_concept_difficulties.functions = 4, 1, 0)) AS functions_d4_count,
SUM(IF(level_concept_difficulties.functions = 5, 1, 0)) AS functions_d5_count,
SUM(IF(level_concept_difficulties.functions_with_params = 1, 1, 0)) AS functions_with_params_d1_count,
SUM(IF(level_concept_difficulties.functions_with_params = 2, 1, 0)) AS functions_with_params_d2_count,
SUM(IF(level_concept_difficulties.functions_with_params = 3, 1, 0)) AS functions_with_params_d3_count,
SUM(IF(level_concept_difficulties.functions_with_params = 4, 1, 0)) AS functions_with_params_d4_count,
SUM(IF(level_concept_difficulties.functions_with_params = 5, 1, 0)) AS functions_with_params_d5_count,
SUM(IF(level_concept_difficulties.conditionals = 1, 1, 0)) AS conditionals_d1_count,
SUM(IF(level_concept_difficulties.conditionals = 2, 1, 0)) AS conditionals_d2_count,
SUM(IF(level_concept_difficulties.conditionals = 3, 1, 0)) AS conditionals_d3_count,
SUM(IF(level_concept_difficulties.conditionals = 4, 1, 0)) AS conditionals_d4_count,
SUM(IF(level_concept_difficulties.conditionals = 5, 1, 0)) AS conditionals_d5_count
FROM user_levels
LEFT OUTER JOIN authored_hint_view_requests
ON authored_hint_view_requests.user_id = user_levels.user_id
AND authored_hint_view_requests.script_id = user_levels.script_id
AND authored_hint_view_requests.level_id = user_levels.level_id
LEFT OUTER JOIN hint_view_requests
ON hint_view_requests.user_id = user_levels.user_id
AND hint_view_requests.script_id = user_levels.script_id
AND hint_view_requests.level_id = user_levels.level_id
INNER JOIN level_concept_difficulties
ON level_concept_difficulties.level_id = user_levels.level_id
WHERE user_levels.best_result = 100
AND user_levels.script_id IN (297, 301, 307, 302, 309, 310, 303)
AND user_levels.id > 1577000000
AND user_levels.id < 1586500000
AND user_levels.created_at > "2018-07-01"
AND user_levels.created_at < "2018-08-01"
AND authored_hint_view_requests.id IS NULL
AND hint_view_requests.id IS NULL
GROUP BY user_levels.user_id;
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
CREATE TABLE user_proficiencies_20180801_20180901 AS
SELECT
user_levels.user_id,
SUM(IF(level_concept_difficulties.sequencing = 1, 1, 0)) AS sequencing_d1_count,
SUM(IF(level_concept_difficulties.sequencing = 2, 1, 0)) AS sequencing_d2_count,
SUM(IF(level_concept_difficulties.sequencing = 3, 1, 0)) AS sequencing_d3_count,
SUM(IF(level_concept_difficulties.sequencing = 4, 1, 0)) AS sequencing_d4_count,
SUM(IF(level_concept_difficulties.sequencing = 5, 1, 0)) AS sequencing_d5_count,
SUM(IF(level_concept_difficulties.debugging = 1, 1, 0)) AS debugging_d1_count,
SUM(IF(level_concept_difficulties.debugging = 2, 1, 0)) AS debugging_d2_count,
SUM(IF(level_concept_difficulties.debugging = 3, 1, 0)) AS debugging_d3_count,
SUM(IF(level_concept_difficulties.debugging = 4, 1, 0)) AS debugging_d4_count,
SUM(IF(level_concept_difficulties.debugging = 5, 1, 0)) AS debugging_d5_count,
SUM(IF(level_concept_difficulties.repeat_loops = 1, 1, 0)) AS repeat_loops_d1_count,
SUM(IF(level_concept_difficulties.repeat_loops = 2, 1, 0)) AS repeat_loops_d2_count,
SUM(IF(level_concept_difficulties.repeat_loops = 3, 1, 0)) AS repeat_loops_d3_count,
SUM(IF(level_concept_difficulties.repeat_loops = 4, 1, 0)) AS repeat_loops_d4_count,
SUM(IF(level_concept_difficulties.repeat_loops = 5, 1, 0)) AS repeat_loops_d5_count,
SUM(IF(level_concept_difficulties.repeat_until_while = 1, 1, 0)) AS repeat_until_while_d1_count,
SUM(IF(level_concept_difficulties.repeat_until_while = 2, 1, 0)) AS repeat_until_while_d2_count,
SUM(IF(level_concept_difficulties.repeat_until_while = 3, 1, 0)) AS repeat_until_while_d3_count,
SUM(IF(level_concept_difficulties.repeat_until_while = 4, 1, 0)) AS repeat_until_while_d4_count,
SUM(IF(level_concept_difficulties.repeat_until_while = 5, 1, 0)) AS repeat_until_while_d5_count,
SUM(IF(level_concept_difficulties.for_loops = 1, 1, 0)) AS for_loops_d1_count,
SUM(IF(level_concept_difficulties.for_loops = 2, 1, 0)) AS for_loops_d2_count,
SUM(IF(level_concept_difficulties.for_loops = 3, 1, 0)) AS for_loops_d3_count,
SUM(IF(level_concept_difficulties.for_loops = 4, 1, 0)) AS for_loops_d4_count,
SUM(IF(level_concept_difficulties.for_loops = 5, 1, 0)) AS for_loops_d5_count,
SUM(IF(level_concept_difficulties.events = 1, 1, 0)) AS events_d1_count,
SUM(IF(level_concept_difficulties.events = 2, 1, 0)) AS events_d2_count,
SUM(IF(level_concept_difficulties.events = 3, 1, 0)) AS events_d3_count,
SUM(IF(level_concept_difficulties.events = 4, 1, 0)) AS events_d4_count,
SUM(IF(level_concept_difficulties.events = 5, 1, 0)) AS events_d5_count,
SUM(IF(level_concept_difficulties.variables = 1, 1, 0)) AS variables_d1_count,
SUM(IF(level_concept_difficulties.variables = 2, 1, 0)) AS variables_d2_count,
SUM(IF(level_concept_difficulties.variables = 3, 1, 0)) AS variables_d3_count,
SUM(IF(level_concept_difficulties.variables = 4, 1, 0)) AS variables_d4_count,
SUM(IF(level_concept_difficulties.variables = 5, 1, 0)) AS variables_d5_count,
SUM(IF(level_concept_difficulties.functions = 1, 1, 0)) AS functions_d1_count,
SUM(IF(level_concept_difficulties.functions = 2, 1, 0)) AS functions_d2_count,
SUM(IF(level_concept_difficulties.functions = 3, 1, 0)) AS functions_d3_count,
SUM(IF(level_concept_difficulties.functions = 4, 1, 0)) AS functions_d4_count,
SUM(IF(level_concept_difficulties.functions = 5, 1, 0)) AS functions_d5_count,
SUM(IF(level_concept_difficulties.functions_with_params = 1, 1, 0)) AS functions_with_params_d1_count,
SUM(IF(level_concept_difficulties.functions_with_params = 2, 1, 0)) AS functions_with_params_d2_count,
SUM(IF(level_concept_difficulties.functions_with_params = 3, 1, 0)) AS functions_with_params_d3_count,
SUM(IF(level_concept_difficulties.functions_with_params = 4, 1, 0)) AS functions_with_params_d4_count,
SUM(IF(level_concept_difficulties.functions_with_params = 5, 1, 0)) AS functions_with_params_d5_count,
SUM(IF(level_concept_difficulties.conditionals = 1, 1, 0)) AS conditionals_d1_count,
SUM(IF(level_concept_difficulties.conditionals = 2, 1, 0)) AS conditionals_d2_count,
SUM(IF(level_concept_difficulties.conditionals = 3, 1, 0)) AS conditionals_d3_count,
SUM(IF(level_concept_difficulties.conditionals = 4, 1, 0)) AS conditionals_d4_count,
SUM(IF(level_concept_difficulties.conditionals = 5, 1, 0)) AS conditionals_d5_count
FROM user_levels
LEFT OUTER JOIN authored_hint_view_requests
ON authored_hint_view_requests.user_id = user_levels.user_id
AND authored_hint_view_requests.script_id = user_levels.script_id
AND authored_hint_view_requests.level_id = user_levels.level_id
LEFT OUTER JOIN hint_view_requests
ON hint_view_requests.user_id = user_levels.user_id
AND hint_view_requests.script_id = user_levels.script_id
AND hint_view_requests.level_id = user_levels.level_id
INNER JOIN level_concept_difficulties
ON level_concept_difficulties.level_id = user_levels.level_id
WHERE user_levels.best_result = 100
AND user_levels.script_id IN (297, 301, 307, 302, 309, 310, 303)
AND user_levels.id > 1586300000
AND user_levels.id < 1610300000
AND user_levels.created_at > "2018-08-01"
AND user_levels.created_at < "2018-09-01"
AND authored_hint_view_requests.id IS NULL
AND hint_view_requests.id IS NULL
GROUP BY user_levels.user_id;
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
CREATE TABLE user_proficiencies_20180901_20181001 AS
SELECT
user_levels.user_id,
SUM(IF(level_concept_difficulties.sequencing = 1, 1, 0)) AS sequencing_d1_count,
SUM(IF(level_concept_difficulties.sequencing = 2, 1, 0)) AS sequencing_d2_count,
SUM(IF(level_concept_difficulties.sequencing = 3, 1, 0)) AS sequencing_d3_count,
SUM(IF(level_concept_difficulties.sequencing = 4, 1, 0)) AS sequencing_d4_count,
SUM(IF(level_concept_difficulties.sequencing = 5, 1, 0)) AS sequencing_d5_count,
SUM(IF(level_concept_difficulties.debugging = 1, 1, 0)) AS debugging_d1_count,
SUM(IF(level_concept_difficulties.debugging = 2, 1, 0)) AS debugging_d2_count,
SUM(IF(level_concept_difficulties.debugging = 3, 1, 0)) AS debugging_d3_count,
SUM(IF(level_concept_difficulties.debugging = 4, 1, 0)) AS debugging_d4_count,
SUM(IF(level_concept_difficulties.debugging = 5, 1, 0)) AS debugging_d5_count,
SUM(IF(level_concept_difficulties.repeat_loops = 1, 1, 0)) AS repeat_loops_d1_count,
SUM(IF(level_concept_difficulties.repeat_loops = 2, 1, 0)) AS repeat_loops_d2_count,
SUM(IF(level_concept_difficulties.repeat_loops = 3, 1, 0)) AS repeat_loops_d3_count,
SUM(IF(level_concept_difficulties.repeat_loops = 4, 1, 0)) AS repeat_loops_d4_count,
SUM(IF(level_concept_difficulties.repeat_loops = 5, 1, 0)) AS repeat_loops_d5_count,
SUM(IF(level_concept_difficulties.repeat_until_while = 1, 1, 0)) AS repeat_until_while_d1_count,
SUM(IF(level_concept_difficulties.repeat_until_while = 2, 1, 0)) AS repeat_until_while_d2_count,
SUM(IF(level_concept_difficulties.repeat_until_while = 3, 1, 0)) AS repeat_until_while_d3_count,
SUM(IF(level_concept_difficulties.repeat_until_while = 4, 1, 0)) AS repeat_until_while_d4_count,
SUM(IF(level_concept_difficulties.repeat_until_while = 5, 1, 0)) AS repeat_until_while_d5_count,
SUM(IF(level_concept_difficulties.for_loops = 1, 1, 0)) AS for_loops_d1_count,
SUM(IF(level_concept_difficulties.for_loops = 2, 1, 0)) AS for_loops_d2_count,
SUM(IF(level_concept_difficulties.for_loops = 3, 1, 0)) AS for_loops_d3_count,
SUM(IF(level_concept_difficulties.for_loops = 4, 1, 0)) AS for_loops_d4_count,
SUM(IF(level_concept_difficulties.for_loops = 5, 1, 0)) AS for_loops_d5_count,
SUM(IF(level_concept_difficulties.events = 1, 1, 0)) AS events_d1_count,
SUM(IF(level_concept_difficulties.events = 2, 1, 0)) AS events_d2_count,
SUM(IF(level_concept_difficulties.events = 3, 1, 0)) AS events_d3_count,
SUM(IF(level_concept_difficulties.events = 4, 1, 0)) AS events_d4_count,
SUM(IF(level_concept_difficulties.events = 5, 1, 0)) AS events_d5_count,
SUM(IF(level_concept_difficulties.variables = 1, 1, 0)) AS variables_d1_count,
SUM(IF(level_concept_difficulties.variables = 2, 1, 0)) AS variables_d2_count,
SUM(IF(level_concept_difficulties.variables = 3, 1, 0)) AS variables_d3_count,
SUM(IF(level_concept_difficulties.variables = 4, 1, 0)) AS variables_d4_count,
SUM(IF(level_concept_difficulties.variables = 5, 1, 0)) AS variables_d5_count,
SUM(IF(level_concept_difficulties.functions = 1, 1, 0)) AS functions_d1_count,
SUM(IF(level_concept_difficulties.functions = 2, 1, 0)) AS functions_d2_count,
SUM(IF(level_concept_difficulties.functions = 3, 1, 0)) AS functions_d3_count,
SUM(IF(level_concept_difficulties.functions = 4, 1, 0)) AS functions_d4_count,
SUM(IF(level_concept_difficulties.functions = 5, 1, 0)) AS functions_d5_count,
SUM(IF(level_concept_difficulties.functions_with_params = 1, 1, 0)) AS functions_with_params_d1_count,
SUM(IF(level_concept_difficulties.functions_with_params = 2, 1, 0)) AS functions_with_params_d2_count,
SUM(IF(level_concept_difficulties.functions_with_params = 3, 1, 0)) AS functions_with_params_d3_count,
SUM(IF(level_concept_difficulties.functions_with_params = 4, 1, 0)) AS functions_with_params_d4_count,
SUM(IF(level_concept_difficulties.functions_with_params = 5, 1, 0)) AS functions_with_params_d5_count,
SUM(IF(level_concept_difficulties.conditionals = 1, 1, 0)) AS conditionals_d1_count,
SUM(IF(level_concept_difficulties.conditionals = 2, 1, 0)) AS conditionals_d2_count,
SUM(IF(level_concept_difficulties.conditionals = 3, 1, 0)) AS conditionals_d3_count,
SUM(IF(level_concept_difficulties.conditionals = 4, 1, 0)) AS conditionals_d4_count,
SUM(IF(level_concept_difficulties.conditionals = 5, 1, 0)) AS conditionals_d5_count
FROM user_levels
LEFT OUTER JOIN authored_hint_view_requests
ON authored_hint_view_requests.user_id = user_levels.user_id
AND authored_hint_view_requests.script_id = user_levels.script_id
AND authored_hint_view_requests.level_id = user_levels.level_id
LEFT OUTER JOIN hint_view_requests
ON hint_view_requests.user_id = user_levels.user_id
AND hint_view_requests.script_id = user_levels.script_id
AND hint_view_requests.level_id = user_levels.level_id
INNER JOIN level_concept_difficulties
ON level_concept_difficulties.level_id = user_levels.level_id
WHERE user_levels.best_result = 100
AND user_levels.script_id IN (297, 301, 307, 302, 309, 310, 303)
AND user_levels.id > 1610200000
AND user_levels.id < 1657000000
AND user_levels.created_at > "2018-09-01"
AND user_levels.created_at < "2018-10-01"
AND authored_hint_view_requests.id IS NULL
AND hint_view_requests.id IS NULL
GROUP BY user_levels.user_id;
Loading
Morty Proxy This is a proxified and sanitized view of the page, visit original site.